2017-09-17 10 views
1

入力をリストのリストにしたいと考えています。 テキストの各行は文字列のリストでなければなりません。フルテキストはリストのリストになります。どうすればこのことができますか? 私はメインとしてこれを持っている:[[String]]への入力を取得するHaskell

main :: IO() 
main = interact (lines >>> foo >>> unlines) 

だから、これが入力された場合:

[[These, are, random], [Words, of, text],[example, example, example]] 
+3

'[String]'リストを '[[String]]'リストにどのように変換するのかは、はっきりしていません。どのような条件に基づいて?あなたはその行の "言葉"が欲しいですか? –

+0

私は –

答えて

1

Haskellは機能words :: String -> [String]があります

These are random 
Words of text 
example example example 

結果がこれである必要があります。たとえば、次のように

Prelude> words "These are random" 
["These","are","random"] 

今、私たちはmap :: (a -> b) -> [a] -> [b]を使用して、行のリストのためにこれを行うことができます。

Prelude> map words ["These are random","Words of text","example example example"] 
[["These","are","random"],["Words","of","text"],["example","example","example"]] 

あなたが最初の文字列の行を抽出するためにlinesでこれを組み合わせることができます。

Prelude> (map words . lines) "These are random\nWords of text\nexample example example" 
[["These","are","random"],["Words","of","text"],["example","example","example"]] 

fooのタイプがfoo :: [[String]] -> [[String]]の場合は、

を使用できます。
main = interact (unlines . map unwords . foo . map words . lines) 
+0

のおかげで例を追加しましたが、これを関数fooにどのように入れることができますか? –

+0

@ JeroenMaassen:更新しました。 –

関連する問題