簡體   English   中英

如何在Haskell中將自然數范圍定義為char?

[英]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只能編碼從09數字:

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"]

這種方法的問題是,您無法檢查elemnotElem因為如果條件是無限列表,則如果不滿足條件,它將永遠無法完成計算。 您將必須實際使用搜索內容的限制。

然后問題是如何嘗試過濾字符串,如果使用第一種列表方法,這是可以的:

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.

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