C語言實際上是一種命令式語言。C語言和Haskell
Haskell我想是完全不同的,因爲它是一種函數式編程語言。
來自C(不是專家),爲了使Haskell達到足夠的知識水平,我必須面對的主要困難是什麼?
感謝
Melawe
C語言實際上是一種命令式語言。C語言和Haskell
Haskell我想是完全不同的,因爲它是一種函數式編程語言。
來自C(不是專家),爲了使Haskell達到足夠的知識水平,我必須面對的主要困難是什麼?
感謝
Melawe
這取決於你的 「充足」 的定義。 Haskell單子可能非常難以掌握,但通過簡單的練習就可以讓自己開始學習,這樣你就可以習慣於以「功能性方式」思考問題,並熟悉類型系統。作爲初學者,我強烈建議您親自登錄Programming in Haskell。
主要麻煩?我想你會首先錯過可變結構。
至少,當我花費了太多的時間來使用過程語言之後,我掌握了一種功能語言之後,會發生這種情況。
的非詳盡列表:
return
並不意味着你認爲這意味着什麼。if
- then
- else
更類似於C的?
- :
比C的if
- else
。特別是,else分支不是可選的。do
區塊內使用if
- then
- else
時要特別小心。map
/fmap
/<$>
,foldr
/其他摺疊功能,filter
,zip
/zipWith
/etc,或者根據您的「循環」做什麼列表解析。 (如果需要,遞歸可用。)
對不起,但我認爲這不是一個可以回答的問題。來自動態類型的命令式/ OO語言,我發現Haskell的*功能*方面幾乎不值一提。得到我的是*類型系統*。這完全取決於你的個人經驗...... – deceze
我的意思是:在Haskell中你可以使用一個變量而不必聲明它,你可以使用函數作爲變量,類型聲明與C不同......我想是一種完全不同的態度走向編程... – Melawe
嗯,是的,它是。所以很難告訴你你會遇到什麼麻煩。最後,你可以在C中進行函數式編程(在某種程度上),把函數調用嵌套在函數調用中。您已經在其他語言中練習得越多,您就越能準備好使用功能語言。 – deceze