>> how to distinguish SQL functions from SQL procedures in code.<<
So from sys.objects you can distinguish Functions from Stored procedures from the type column. For instance:
To list all functions:
SELECT * FROM sys.objects WHERE type in (N'FN', N'IF', N'TF', N'FS', N'FT')
To list all procedures:
SELECT * FROM sys.objects WHERE type in (N'P', N'PC')