Skip to content

Commit

Permalink
initial combinators
Browse files Browse the repository at this point in the history
  • Loading branch information
Marko Mikulicic committed Jan 2, 2010
1 parent ba376db commit ed249c4
Showing 1 changed file with 18 additions and 9 deletions.
27 changes: 18 additions & 9 deletions src/clarsec.clj
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@
:rest rest})

(defmonad parser-m
[m-result (fn m-result-parser [x] (fn [str] {:type :consumed
:value x
:rest str}))
[m-result (fn m-result-parser [x] (fn [str] (consumed x str)))
m-bind (fn m-bind-parser [parser func]
(fn [strn]
(let [result (parser strn)]
Expand All @@ -24,17 +22,28 @@

m-zero (fn [strn] (failed))

m-plus (fn [& parsers] (println "ciao" parsers))
]
)

(defmonadfn any-char [strn]
(if (= "" strn)
(failed)
(consumed (first strn)
(. strn (substring 1))))
)
(if (= "" strn)
(failed)
(consumed (first strn)
(. strn (substring 1))))
)


(defmonadfn satisfy [pred]
(domonad [c any-char
:when (pred c)]
(str c)))

(defmonadfn string [str]
(domonad [x (m-seq (map (fn [x] any-char) str))]
"ciao")

; (m-seq [any-char any-char])
)

(defmonadfn body []
(domonad [x any-char
Expand Down

0 comments on commit ed249c4

Please sign in to comment.