2014-06-24 98 views
0

Haskell,python和c函數之間的主要區別是什麼?什麼是Haskell,python和c函數之間的主要區別?

我知道haskell函數可以得到一個函數作爲參數嗎?它只在哈斯克爾?

+2

在Python中,您還可以獲取一個函數作爲參數。事實上,你可以傳遞任何你想要的參數,因爲[Python中的所有東西都是*對象*](http://stackoverflow.com/questions/865911/is-everything-an-object-in-python-like-紅寶石)。 – Christian

+2

即使在C中(通過函數指針),獲取函數作爲參數也很容易。有趣的部分是在運行時創建新的功能。 – delnan

+0

在C中,你也可以將一個函數作爲一個參數(通過使用*函數指針*),儘管它不如Haskell或Python那麼令人愉快。 – ruakh

回答

4

Haskell函數和C函數之間的根本區別在於Haskell函數不能產生副作用。它們不能在被調用時修改狀態,因此當用相同的參數重複調用時會返回相同的值。這並不是說你不能在C中擁有純函數。我鼓勵你閱讀關於函數式編程的文章,也許在Haskell中有一個教程來獲得關於這個主題的更清晰的概念。

+1

除非,你知道,'unsafePerformIO'。 – delnan

+1

回覆:「關於函數式編程的文章」:但是當然,大多數函數式編程語言在這方面都像C一樣。 Haskell在*禁止*副作用(例如沒有'System.IO.Unsafe')時是非常不尋常的,所以如果這是「根本區別」,那麼大多數函數式語言從根本上來說比命令式語言更類似於Haskell。我從來沒有這樣想過。 。 。 – ruakh

相關問題