有關函式式程式設計,return語句能否理解成為乙個函式?

時間 2021-05-29 23:09:19

1樓:

據我有限的觀察,我認為:

某些語言,乙個函式就是乙個表示式(此類語言多半也同時是函式式的),return確實就是乙個函式,它的返回值是乙個Monad型別類的資料型別。

另一些語言,比如Rust, 雖然強調一些函式式的風格,但稱不上函式式語言,return是一種流控制語句。

2樓:丟貓

函式式語言和函式式程式設計不一樣啊,函式式語言不寫流程和迴圈而是寫遞迴和尾遞迴,所以可以很簡單表達計算流程的終止。函式式語言裡的控制流是通過各種函式和函子實現的,計算過程通過函式和函子以特定方式組合,起控制作用的物件可以命名成return,讓乙個計算過程結束並返回特定的值。

非函式式語言,return是乙個控制流語句,不能理解成函式。你可以寫乙個函式來傳遞返回值,但是實現不了return的控制作用。實現能起控制作用的函式要在一些特殊結構裡(例如迭代器),在return執行的同時告訴執行器中斷執行,這是執行時決定的,而普通的return在編譯時就確定了下一步的計算流程。

3樓:

最接近return是函式的理解方式是把他理解成continuation:

比如(call/cc (lambda (return) (return 42)))這裡的return就看起來比較像乙個函式,但是continuations are not necessarily functions。大部分語言沒有call/cc這種構造。因此最好不要認為return是一種函式,認為他是語言的一部分就好了。

4樓:Li Ye

"使用return f(x)這個語句,就相當於是把f(x)當作成乙個引數返回了。並不需要下一句「或者返回的是乙個函式」的條件了。"

第一句和第二句描述的是不同的東西。

返回的是函式值和返回的是函式區別好大。

返回的是函式值沒啥稀奇。返回的是函式,那就可以再次呼叫。

為什麼會有函式式程式設計?

Jason Hu 這個問題就是跟問 為什麼會有數學,數學是為了解決什麼問題 是乙個意思。基於lambda calculus的語言比基於TM的語言具有更數學含義。實際上,任一形式邏輯系統都對應一種函式式語言。相反,基於TM的語言自成一系,並無法繼承數學和邏輯系統裡的知識架構。另外,基於TM的程式語義也...

函式式程式設計immutable data是不是本質上效能就差點?

個人認為是的,而且開發起來好像也更加麻煩,如果要更新值,那麼完了還要把原來的 replace 掉,甚至要把所有有關聯的地方都要做一次 update.意義是什麼?就為了乙個所謂的無隱患 copy 如果說的不對,還希望大家指出正確使用方式。 navegador 它不一定就得真正的去 malloc.只要在...

想要理解函式式程式設計的思想,最好用哪種函式式程式語言入門?

SML虐我千百遍,我待SML如初戀 上學期上了CMU 15150,差一點就拿C了好驚險。SML作為教學用還是很不錯的,因為理論方面比較完善。SML裡有個概念叫totality。有了這個totality可以證明很多theorem。這個是Haskell做不到的 Scheme Standard ML Ha...