際際滷

際際滷Share a Scribd company logo
モナドで恬る
屎ア蹶Fコンビネ`タライブラリ
Akihiro HARAI
徭失B初
Haskell を岑ったのは
仝ふつける々が竃る磯定くらい念
2005 定挑くらい
Java で駅ず final を原ける
徭蛍の來鯉によくマッチ
圻小 嫦埼 ┐呂蕕 あきひろ
モナドを聞った屎ア蹶F
コンビネ`タライブラリ
きっかけ その 1
坪何 DSL では
o尖
GHC 原奉の屎ア蹶Fライブラリが
屎ア蹶Fを仝猟忖双々としてQうことに音
きっかけ その 2
Yet Another Haskell Tutorial
Chapter 9 "Monads" 119 ペ`ジ
仝 Haskell のグルになりたい宀のみモナドを恬れ々
仝されど、モナドの恬り圭が蛍かれば Haskell ライフ
はよりNかになるだろう々
モナドを聞って
Parsec っぽい
屎ア蹶Fコンビネ`タを恬れば
匯I誼殖
モナドの嬬薦議に辛嬬か
バックトラックは
瘁圭歌孚は
モナドの嬬薦議に辛嬬か
バックトラックは
瘁圭歌孚は
愔莞 NFA ならば
リストとW决uを聞って徭隼にける
冱Z坪 DSL のメリットを伏かせば
徭喇徭壓
こんな湖じに聞います
testRegex :: Regex ()
testRegex = do
rxCaret
(matched, val) <- rxStar $
do
rxOneChar 'a'
rxOneChar 'b'
rxOneChar 'c'
rxOneChar 'd'
rxDollar
return ()
わかりやすさ嶷のため
庇L來には朕をつぶってください???
/^(ab)*cd
$/
rxStar 參和で
マッチした猟忖双
rxStar から卦される
販吭の
g處
メリットとデメリット
メリット
デメリット
い床議侏原け
燕Fの壅旋喘が否叟
燕Fの啜弔遍撹と筝が辛嬬
猟忖双ではなく販吭のト`クン双への
m喘が辛嬬隆g廾
峰が庇L
恷m晒は Haskell コンパイラ卆贋
g廾匯何
newtype Regex a =
Rx { runRegex :: (RxTarget -> [(RxTarget,
a)]) }
data RxTarget = RxTarget {
rxTargetBefore :: String, -- 剃
rxTargetMatched :: String, -- 剃
rxTargetAfter :: String }
instance Monad Regex where
m >>= next = Rx $ target -> let
thisCand = runRegex m target
getNextCand (target', a) = runRegex (next a) tar
get'
in concatMap getNextCand thisCand
return a = Rx $ target -> [(target, a)]
g廾ずみのC嬬
^ $ * ( ) *? . |
[ ]
瘁圭歌孚など
モナドで畠何できる
モナドってすごい
Haskell ってすごい
ご賠ありがとうございました

More Related Content

Haskell Night: LT モナドで恬る屎ア蹶Fコンビネ`タライブラリ