2017-04-24 36 views
0

我有一個關於Haskell的基本問題,因爲我是功能編程的新手,這使我難以理解。哈斯克爾 - 如何修改現有的函數值

我有例如

foo 1 1 = 0 
foo 1 2 = 1 
foo 2 1 = 1 
foo 2 2 = 0 

簡單的功能,我想通過另一個函數來改變根據條件的函數值(例如從1到0,如果該值是1)。我怎樣才能做到這一點?我來自python,並以某種方式卡住思想的方式,我可以簡單地在函數體中分配新值。

即時試圖沿着這條路線的東西:

changeValue x y 
     |(foo x y == 1) = foo x y = 0 

一個小提示,將不勝感激,因爲它感覺像一個簡單的問題,我只是無法找到一個解決方案。謝謝!

+2

這在Haskell中是不可能的。在Python中也不是這樣的;如何向我們展示一些實際使用的Python代碼,它們使用了您實際想到的那種變化? – leftaroundabout

+0

感謝您的回答。我在考慮Python中的變量等函數時犯了一個錯誤。 – Totoro

回答

0

也許看看http://learnyouahaskell.com/syntax-in-functions有幫助嗎?把哈斯克爾函數看作數學函數,那裏也沒有任務。

無論如何,您可以通過其他函數詢問要比較的值,例如在這種情況下返回1

foo 0 1     = 1 
foo x y 
    | otherfunction x y == 7 = 1 
    | otherwise    = 0 
+0

謝謝!我想我可以通過這種方式解決我的問題:) – Totoro

+0

我認爲我真正想要做的是永久更改該功能,或者更確切地說覆蓋它。我只是有點困惑:) – Totoro