- Clean
- Haskell
- OS
- SICP
- e+
- fst
- otherwise
- snd
- ふつける
- コンパイル
- ソース
- トップレベル
- フリースタイル
- ポイント
- メモ
- モジュール
- 関数
- 読書会
- 本日
2006-05-21
■Clean 遅延評価が(ちょっと)便利なとき
ListLS ( map (\ (label,x) -> ButtonControl (toString $ label)
[ControlPos (LeftTop ,OffsetVector {vx=x*bw,vy=0})]
)
(zip2 labels [0..]) )
無限リストを引数に取れるのでzip関数と組み合わせてこんな感じで、画面がつくれたりする。
だからどうしたと言う感じだが…
CleanのWindowのコントロールについてはここら辺参照
http://sky.zero.ad.jp/~zaa54437/programming/clean/ObjectIOLibrary12/Chap7.html
■ Sum
http://sicp.g.hatena.ne.jp/hyuki/20060521
を読んで浮かんだ解をCleanで書いてみる
Start = sumCol [ [1,2,3],[4,5,6],[7,8,9] ] sumCol xss = map sum (map (\ n -> (map (index n) xss)) (indexList xss) ) where index n xs = (flip (!!) n) xs
われながら汚いとおもう。
その後url先の解を見てapplyって便利だなぁと思った
追記
というよりもSchemeのmapの動作がああいう動作だからか…
indexListつかえば上の
ListLS ( map (\ (label,x) -> ButtonControl (toString $ label)
[ControlPos (LeftTop ,OffsetVector {vx=x*bw,vy=0})]
)
(zip2 labels [0..]) )
ListLS ( map (\ (label,x) -> ButtonControl (toString $ label)
[ControlPos (LeftTop ,OffsetVector {vx=x*bw,vy=0})]
)
(zip2 labels (indexList labels)) )
■SOE本
高階型のところをよんでみる。
関手やfmap、Monad、StateMonad,IOMonadの話がでてくる。
昨日聞いたmzeroやMonadPlusの話が出てきたの復習にちょうどいい。

