簡體   English   中英

理解簡單的 Haskell

[英]Understanding simple Haskell

我試圖寫一個程序,我可以輸入一個函數,奇數和偶數例如,它會給我並不適用於功能應有盡有。 說,分開奇數 [1,2,3,4] - 如果我們運行函數偶數,這應該返回 [2,4] 和 [1,3]。 下面是我寫的:

separate f (x:xs)
  | f x = filter f xs
  | otherwise = x : filter f xs

為什么會出現如下圖所示? 看起來,如果 fx 為真,它將過濾其余部分並忽略 x,否則,它將使用相同的准則取 x 並過濾其余部分。 我在這里錯過了什么嗎?

separate odd [1,2,3,4]
=> [3]

在兩種情況下,您調用filter 您幾乎可以肯定打算(遞歸)調用separate

separate f (x:xs)
  | f x = separate f xs
  | otherwise = x : separate f xs

這將帶您進入下一個錯誤。

您為什么不這樣做:

filter f xs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM