モナドを使ってこれを一行で書き直す方法はありますか?
input <- getLine
let parsed = reads input :: [(Int,String)]
入力を渡す方法を理解できませんでした。私の試みはラムダ表記について考えているでしょう。
モナドを使ってこれを一行で書き直す方法はありますか?
input <- getLine
let parsed = reads input :: [(Int,String)]
入力を渡す方法を理解できませんでした。私の試みはラムダ表記について考えているでしょう。
の別の場所fmap! fmap値を別のもの (この場合は 内) 内で変更するために使用しますgetLineが、より広く役立ちます。
parsed <- fmap reads getLine :: IO [(Int,String)]
または withimport Data.Functorまたはimport Control.Applicativeあなたはこれを次のように書くことができます
parsed <- reads <$> getLine :: IO [(Int,String)]
コンパイラは、他の場所から意味を推測できる可能性がありますInt。その場合、明示的な型シグネチャを省略できます。
fmap知っておくと非常に便利な機能です。詳細については、fmap に関するこの他の回答を参照してください。ここで、ミニ チュートリアルを作成しました。
実際、ワンライナーをきれいに書く方法に興味があるなら、Applicative Functor についてもっと調べる必要があります。