Sto andando su questa conferenza di haskell su count down game, non conosco alcun haskell ma sono interessato al problema, sto provando a portare il suo codice per il clojure.Haskell to Clojure
questa è la parte mi sono bloccato deve essere qualcosa che non capisco in 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)
ho la mia divisa data 1 2 3 4 sputa fuori,
(((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]))
che mi dà,
java.lang.IllegalArgumentException: Don't know how to create ISeq from: java.lang.Integer
Può un nyone dimmi cosa mi manca dal codice haskell?
Il suo elenco completo di codici è disponibile here.
L'ultima riga del codice Haskell manca un quadrato di chiusura Staffa? –
Ho dato un'occhiata allo stesso problema qui, anche se più forza bruta come l'elegante soluzione di Graham Hutton. Vedi http://www.fatvat.co.uk/2009/02/countdown.html –
grazie mille jeff, stavo provando comunque il metodo della forza bruta. –