我有一個基本的問題,如果..後,我不能有多個功能,爲什麼?多個函數後,如果然後..,不工作在哈斯克爾
check [] _ _ = []
check (x:xs) limit counter = if (x> head xs && counter < limit)
then incr counter -- I want here add another action
else if (x < head xs)
then check xs limit counter
else incr x
main = do
print $ check [4,3,5,6] 1 0
--- The answer I aim is : [3,4,5,6]
檢查的目標是要找到每一個元素是否是比下一個或不是做大,如果是,則增加計數器,做一套動作像掉他們的地方,並且是有一定限度的這個動作,像這裏只是一次,意味着只有一次它可以做到這一點,而不是更多。
你想增加計數器,然後繼續檢查列表的其餘部分?順便說一句,你不要用'incr'修改'counter'或'x'的值(不管怎麼樣,你應該使用'succ',除非你在某處定義了'incr'),你只需要返回一個櫃檯的新價值。您必須再次顯式調用該函數,例如'check xs limit(succ counter)'或'succ x:check xs limit counter'。 – bheklilr