Dalam F # perlu menggunakan rec
kata kunci. Dalam Haskell tidak perlu secara eksplisit mengetahui apakah fungsi yang diberikan bersifat rekursif atau tidak.
Mengingat peran rekursi dalam pemrograman fungsional, desain F # agak aneh bagi saya. Apakah ini keputusan desain bahasa yang baik atau hanya ada karena alasan historis atau karena kendala implementasi?
sumber
Ini pertanyaan sudah dijawab di SO , dan itu termasuk beberapa latar belakang sejarah yang kuat mengapa "rec" digunakan.
Berikut adalah kutipan penting untuk anak cucu:
sumber
Rekursif
let
mendefinisikan semantik yang jauh lebih rumit daripada semantik yang normal. Oleh karena itu, demi kesederhanaan dan desain bahasa yang bersih, ada alasan bagus untuk memiliki keduanya, sama seperti memiliki yang terpisahlet
,let*
danletrec
dalam Skema.Sederhana
let x = y in z
sama dengan((fun x -> z) y)
. Let rekursif jauh lebih rumit dan mungkin melibatkan penggunaan combinator titik tetap.sumber