有誰知道在Haskell方式的東西轉化形式轉換的字母列表到Word(和刪除語音標記)
["w","o","r","d"]
到
word
我剛剛完成我的第一個程序(一個RSA加密),目前的輸出非常難看。我很抱歉,如果這是一個非常愚蠢的問題,但我真的不知道如何去做。此外,爲了讓我輸入輕鬆了很多,沒有人知道的方式轉換
word
到
[w,o,r,d]
有誰知道在Haskell方式的東西轉化形式轉換的字母列表到Word(和刪除語音標記)
["w","o","r","d"]
到
word
我剛剛完成我的第一個程序(一個RSA加密),目前的輸出非常難看。我很抱歉,如果這是一個非常愚蠢的問題,但我真的不知道如何去做。此外,爲了讓我輸入輕鬆了很多,沒有人知道的方式轉換
word
到
[w,o,r,d]
即使您從來沒有聽說過「concat」,下面介紹如何解決這類問題。讓我們來找出什麼類型你有:
λ> :t ["w","o","r","d"]
["w","o","r","d"] :: [[Char]]
OK,所以這是的Char
小號列表的列表。
現在,讓我們找出你想要的類型:
λ> :t "word"
"word" :: [Char]
因此,我們要的是轉換的Char
小號名單列表的Char
■簡單列表功能。換句話說,我們需要一個簽名爲[[Char]] -> [Char]
的函數。讓我們使用Hoogle搜索具有該類型簽名*的函數。這樣做,列表中的第四項功能是:
concat :: [[a]] -> [a]
base Prelude, base Data.List
Concatenate a list of lists.
這正是我們想要的。
[[a]] -> [a]
。 (這種見解帶有實踐意義。)當我剛纔那樣做時,concat
是第一個結果。檢查類型:
Prelude> let s = ["w","o","r","d"]
Prelude> :t s
s :: [[Char]]
所以,你可以把它當作字符列表的列表。
什麼函數「flattens」列出? CONCAT:
Prelude> :t concat s
concat s :: [Char]
所以這就是我們的字符串,我們用putStrLn
Prelude> putStrLn $ concat s
word
看CONCAT打印。你有一個字符列表的列表。扁平化這是一種常見模式,concat是實現它的工具。也就是說,如果你正在學習,你可能會自己動手。
正如其他人所說,concat
是將[[Char]]
轉換爲[Char]
的方法,至於換個方式,您有兩種選擇。您可以將您的字符串"word"
當作Char
的列表(請記住,它的類型是String
,它只是[Char]
的別名),只是在Char
s而不是String
s上運行,或者您可以將每個單個字符轉換爲單字符String
。我推薦前者,但我會演示另一個。
最簡單的方法是使用非常簡單的列表理解。所有你需要做的就是從這個單詞中得到每個字母,並將它包裝在[]
中,以使它成爲一個列表。由於String = [Char]
,您將該單詞的每個字母作爲String
。
splitUpWord :: String -> [String]
splitUpWord word = [[letter] | letter <- word]
我無法投票回覆您的回覆,因爲我的聲譽不夠高,但非常感謝您,我現在就馬上申請。 – Michael
這可能是一個非常愚蠢的問題,但我現在如何應用您給我的操作? – Michael
排序它,然後 – Michael