Estoy repasando esta conferencia de Haskell en count down game, no conozco ningún haskell pero estoy interesado en el problema, estoy tratando de portar su código a clojure.Haskell to Clojure
esta es la parte que quedó atascado Debe haber algo que no entiendo en Haskell,
split :: [a] -> [([a],[a])]
split [] = [([],[])]
split (x:xs) = ([],x:xs) : [(x:ls,rs) | (ls,rs) [([a],[a])]
nesplit = filter ne . split
ne :: ([a],[b]) -> Bool
ne (xs,ys) = not (null xs || null ys)
exprs :: [Int] -> [Expr]
exprs [] = []
exprs [n] = [Val n]
exprs ns = [e | (ls,rs)
tengo mi propia división da 1 2 3 4 escupe,
(((1) (2 3 4)) ((1 2) (3 4)) ((1 2 3) (4)))
(defn split [v]
(if (= (count v) 1)
(list (first v))
(map #(list (take % v) (drop % v)) (range 1 (count v)))))
(defn exprs [v]
(if (= (count v) 1)
v
(map #(concat (exprs (first %)) (exprs (second %))) v)))
(exprs (split [1 2 3 4]))
que me da,
java.lang.IllegalArgumentException: Don't know how to create ISeq from: java.lang.Integer
Puede una nyone dime qué me falta del código haskell?
Su lista completa de código está disponible here.
Es la última línea de su código Haskell que falta un cuadrado de cierre ¿soporte? –
Eché un vistazo al mismo problema aquí, aunque con más fuerza bruta que la elegante solución de Graham Hutton. Ver http://www.fatvat.co.uk/2009/02/countdown.html –
muchas gracias Jeff, estaba intentando el método de la fuerza bruta de todos modos. –