私は本の中でこの演習をやろうとしている、一覧
関数定義:
onSeperateLines :: [String] -> String
文字列のリストを受け取り、印刷された単一の文字列を返します。別々の行に文字列を表示します。 「私は、単一の文字列にリストを変換するに苦しんだ
は
onSeperateLines :: [String] -> String
onSeperateLines ls = [x | x <- ls]
私は文字列を取り、リストと、リストを出力リストに変換する関数を書くことができますが、私はすることができますリストを取って単一の文字列に変換する方法を理解する。あなたが実際にいくつかのアプリケーションのためにこれを必要とする場合したがって
type String = [Char]
、
onSeperateLines :: [[Char]] -> [Char]
は今、それは最初ask Hoogle if there's already something thereすることをお勧めします:
私は["first"、 "second"、 "third"]のリストを入力した場合、前の(l:ls)表記を使用しませんでした。 'ls'はリストであり、 'l'はリストの最初の文字列を参照するためではありませんか? – W22
別の良いもの: 'intercalate'は、' unwords'と 'unlines'を簡単に一般化します。 – dfeuer
@ W22:右。だからこそ 'ls'を再帰的に呼び出すのです:これらの呼び出しの中で、どの行も一度' l'になります! – leftaroundabout