Có một sự khác biệt vốn có trong ngữ nghĩa Haskell và F #. Trong Haskell, một lệnh gọi hàm không thực hiện bất kỳ phép tính thực tế nào, nhưng phân bổ một đối tượng heap được gọi là 'thunk'. Hoàn toàn ổn khi một thunk có một liên kết đến chính nó hoặc một thunk khác. Tuy nhiên, trong F #, một lệnh gọi hàm là một cuộc gọi thực tế, làm cho các biểu thức như let x = 1 : 2 : x in x
không hợp lệ - vì nó yêu cầu x
phải được xây dựng trước khi 1 : 2 : x
được xây dựng. Tuy nhiên, vẫn còn ít nhiều định nghĩa hợp lý cho danh sách vô hạn, một số cách để xác định nó nên tồn tại. Đây là rễ cho rec
. Nếu bạn muốn nhiều hơn, tìm kiếm và đọc các ngữ nghĩa hoạt động cho SML và Haskell - thì khác.