2006-09-12Preluedeってステキな名前
■ 4.4 練習問題1
「標準入力を行単位でソート」の意味をどう捉えるのが一般的か。
1. 1行を1要素とみなして、複数行をソート
2. 1行の中に含まれる各文字列を1要素とみなしてソート
日本語の難しさは置いておいて、両方作ってみる。
1. 1行を1要素とみなして、複数行をソート
import List
main = do cs <- getContents
putStr $ unlines $ sort $ lines cs
> sort < sort.hs
putStr $ unlines $ sort $ lines cs
import List
main = do cs <- getContents
空行のみが先頭、スペースから始まるのが2番目、以下アルファベット順。
2. 1行の中に含まれる各文字を1要素とみなしてソート
import List
main = do cs <- getContents
putStr $ unlines $ map sort $ lines cs
> sort2 < sort2.hs
Liimoprstt
-<=Cacdeegimnnnoossttt
$$$Saceeiillmnnnopprrsssstttuu
各行中の要素がソートされております。
で、答えを見たら1.だった。でも$で繋がないで、.で繋いでるのは何でだ…。「=<< getContents」も意味はわかるけど、こんな書き方できるのは知らない。
■ 4.4 練習問題2
import List
main = do cs <- getContents
putStr $ unlines $ map head $ group $ lines cs
text.txt
111 111 222 333 333 2222
>uniq < text.txt 111 222 333 2222
■ 感想
- わかんなくなりそうになったら後ろから順を追って考える
- でもそれって関数型プログラミングなのかな?単に後ろから評価しているに過ぎないような。
- 日本語って難しい
コメントを書く