![](/img/trans.png)
[英]How to define a function that takes natural numbers of a data type and return their sum?
[英]How to define range of natural numbers as chars in Haskell?
我試過了:
['1','2',..]
但這也考慮了其他字符。 我可以做[1,2 ..],但是對於我的應用程序,我需要檢查以下內容:
filter (\x -> x `notElem` ['0','1'..]) "a 1 255 d e 6 g h"
試圖過濾掉所有元素,包括非自然數的空格,在這種情況下為“字符”。
如評論中所述,有一些方法:
繼承為chars
的自然數。 以及char只能編碼從0
到9
數字:
naturalN :: [Char]
naturalN = ['0'..'9']
例:
['0'..'9']
=> "0123456789"
就所有自然數而言,它不能被編碼為char,而是字符串。 例如:
naturalN :: [String]
naturalN = map show [0..]
例:
take 20 naturalN
=> ["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"]
這種方法的問題是,您無法檢查elem
或notElem
因為如果條件是無限列表,則如果不滿足條件,它將永遠無法完成計算。 您將必須實際使用搜索內容的限制。
然后問題是如何嘗試過濾字符串,如果使用第一種列表方法,這是可以的:
filter (\x -> x `elem` ['0'..'9']) "a 1 255 d e 6 g h"
=> "12556"
要么:
filter isDigit "a 1 255 d e 6 g h"
=> "12556"
如果您想要相反的東西,那就去掉字符串的數字:
filter (not.isDigit) "a 1 255 d e 6 g h"
=> "a d e g h"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.