Haskell をちょっとだけ触ってみました☆

また (笑) Blosxom クローンを作ろうと思ったんだけど、前途多難そう"(ノ_・、)" 手元の GHC が 6.4.1 で Network.CGI がないんだもん(Ω_Ω)

とりあえず CGI までいかずに少しだけ (笑)

#!runghc

import System.Directory 
import Data.Maybe 
import Text.Regex 
 
isMatch :: FilePath -> Bool 
isMatch path = isJust (matchRegex (mkRegex  ".txt$") path) 
 
main = do list <- getDirectoryContents "." 
          putStr $ unlines $ filter isMatch $ list

関数の呼びだしかたがそもそもわからなくてこまったへ(゜∇、°)

$ を使ってるけど意味がわかってない (笑) Unix のパイプみたいなものだと思うけど( ̄〜 ̄;)??

うえのはさらに isMatch なんて新しく関数を定義しなくても、無名関数をつくってしたみたいに書けるみたい

main = do list <- getDirectoryContents "."
          putStr $ unlines $ filter (\path -> isJust (matchRegex (mkRegex ".css$") path)) $ list

\ と -> でつくるみたい。簡単でちょっとかっこいい (笑)

Haskell の部分適用がカリー化のおかげで簡単なのはわかるけど、これって Scheme でいえば pa$ 相当だよね。cut みたいに引数の位置を指定するのはどうしたらいいのかなー(・_・?)

isMatch path = isJust $ matchRegex reg path where reg = mkRegex ".txt$"

こっちのほうがスマートかなぁ