Created
December 22, 2011 14:22
-
-
Save broquaint/1510460 to your computer and use it in GitHub Desktop.
Confused by for and nested structures
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ lein test | |
Testing fore-clojure.test.core | |
PFS [[[[:a :b]]] [[:c :d]] [:e :f]] | |
COND true [[:a :b]] [[[:a :b]]] | |
- PFS [[:a :b]] | |
COND true [:c :d] [[:c :d]] | |
- PFS [:c :d] | |
COND false :e [:e :f] | |
- COND false :a [:a :b] | |
FAIL in (can-partially-flatten-a-sequence) (core.clj:6) | |
(= (partially-flatten-a-sequence-solution [[[[:a :b]]] [[:c :d]] [:e :f]]) | |
[[:a :b] [:c :d] [:e :f]]) | |
expected: (= (partially-flatten-a-sequence-solution [[[[:a :b]]] [[:c :d]] [:e :f]]) [[:a :b] [:c :d] [:e :f]]) | |
ERROR in (can-partially-flatten-a-sequence) (LazySeq.java:47) | |
(= (partially-flatten-a-sequence-solution [[[[:a :b]]] [[:c :d]] [:e :f]]) | |
[[:a :b] [:c :d] [:e :f]]) | |
expected: (= (partially-flatten-a-sequence-solution [[[[:a :b]]] [[:c :d]] [:e :f]]) [[:a :b] [:c :d] [:e :f]]) | |
actual: java.lang.RuntimeException: java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.lang.Keyword | |
LazySeq.java:47 clojure.lang.LazySeq.sval | |
LazySeq.java:56 clojure.lang.LazySeq.seq | |
RT.java:450 clojure.lang.RT.seq | |
core.clj:122 clojure.core/seq | |
core_print.clj:44 clojure.core/print-sequential | |
core_print.clj:138 clojure.core/fn | |
MultiFn.java:167 clojure.lang.MultiFn.invoke | |
core.clj:2812 clojure.core/pr-on | |
core_print.clj:56 clojure.core/print-sequential | |
core_print.clj:138 clojure.core/fn | |
MultiFn.java:167 clojure.lang.MultiFn.invoke | |
core.clj:2812 clojure.core/pr-on | |
core_print.clj:56 clojure.core/print-sequential | |
core_print.clj:138 clojure.core/fn | |
MultiFn.java:167 clojure.lang.MultiFn.invoke | |
core.clj:2812 clojure.core/pr-on | |
core_print.clj:56 clojure.core/print-sequential | |
core_print.clj:138 clojure.core/fn | |
MultiFn.java:167 clojure.lang.MultiFn.invoke | |
core.clj:2812 clojure.core/pr-on | |
core.clj:2824 clojure.core/pr | |
AFn.java:161 clojure.lang.AFn.applyToHelper | |
RestFn.java:132 clojure.lang.RestFn.applyTo | |
core.clj:540 clojure.core/apply | |
core.clj:3700 clojure.core/pr-str | |
RestFn.java:408 clojure.lang.RestFn.invoke | |
test.clj:361 clojure.test/fn | |
MultiFn.java:163 clojure.lang.MultiFn.invoke | |
AFn.java:161 clojure.lang.AFn.applyToHelper | |
AFn.java:151 clojure.lang.AFn.applyTo | |
core.clj:542 clojure.core/apply | |
NO_SOURCE_FILE:1 user/eval125[fn] | |
RestFn.java:425 clojure.lang.RestFn.invoke | |
AFn.java:163 clojure.lang.AFn.applyToHelper | |
RestFn.java:132 clojure.lang.RestFn.applyTo | |
core.clj:542 clojure.core/apply | |
NO_SOURCE_FILE:1 leiningen.util.injected$compose_hooks$fn__105.doInvoke | |
RestFn.java:137 clojure.lang.RestFn.applyTo | |
core.clj:540 clojure.core/apply | |
NO_SOURCE_FILE:1 leiningen.util.injected$run_hooks.invoke | |
NO_SOURCE_FILE:1 leiningen.util.injected$prepare_for_hooks$fn__110$fn__111.doInvoke | |
RestFn.java:408 clojure.lang.RestFn.invoke | |
test.clj:344 clojure.test/do-report | |
core.clj:6 fore-clojure.test.core/fn | |
test.clj:688 clojure.test/test-var[fn] | |
test.clj:688 clojure.test/test-var | |
test.clj:704 clojure.test/test-all-vars[fn] | |
test.clj:658 clojure.test/default-fixture | |
test.clj:704 clojure.test/test-all-vars[fn] | |
test.clj:658 clojure.test/default-fixture | |
test.clj:700 clojure.test/test-all-vars | |
test.clj:723 clojure.test/test-ns | |
core.clj:2096 clojure.core/map[fn] | |
LazySeq.java:42 clojure.lang.LazySeq.sval | |
LazySeq.java:56 clojure.lang.LazySeq.seq | |
Cons.java:39 clojure.lang.Cons.next | |
RT.java:1186 clojure.lang.RT.boundedLength | |
RestFn.java:130 clojure.lang.RestFn.applyTo | |
core.clj:542 clojure.core/apply | |
test.clj:738 clojure.test/run-tests | |
RestFn.java:137 clojure.lang.RestFn.applyTo | |
core.clj:540 clojure.core/apply | |
NO_SOURCE_FILE:1 user/eval125[fn] | |
NO_SOURCE_FILE:1 user/eval125 | |
Compiler.java:5424 clojure.lang.Compiler.eval | |
Compiler.java:5415 clojure.lang.Compiler.eval | |
Compiler.java:5391 clojure.lang.Compiler.eval | |
core.clj:2382 clojure.core/eval | |
main.clj:235 clojure.main/eval-opt | |
main.clj:254 clojure.main/initialize | |
main.clj:279 clojure.main/null-opt | |
main.clj:354 clojure.main/main | |
RestFn.java:421 clojure.lang.RestFn.invoke | |
Var.java:369 clojure.lang.Var.invoke | |
AFn.java:163 clojure.lang.AFn.applyToHelper | |
Var.java:482 clojure.lang.Var.applyTo | |
main.java:37 clojure.main.main | |
Caused by: java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.lang.Keyword | |
RT.java:471 clojure.lang.RT.seqFrom | |
RT.java:452 clojure.lang.RT.seq | |
RT.java:540 clojure.lang.RT.first | |
core.clj:53 clojure.core/first | |
core.clj:10 fore-clojure.core/partially-flatten-a-sequence-solution[fn] | |
core.clj:10 fore-clojure.core/partially-flatten-a-sequence-solution[fn] | |
LazySeq.java:42 clojure.lang.LazySeq.sval | |
Ran 1 tests containing 2 assertions. | |
1 failures, 1 errors. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns fore-clojure.core | |
(:require [clojure.string])) | |
;; [ | |
;; [ | |
;; [ | |
;; [:a :b] | |
;; ] | |
;; ] | |
;; [ | |
;; [:c :d] | |
;; ] | |
;; [:e :f] | |
;; ] | |
(defn partially-flatten-a-sequence-solution | |
([pfs] (partially-flatten-a-sequence-solution pfs 0)) | |
([pfs depth] | |
(let [indent (clojure.string/join "" (repeat depth "-"))] | |
(println indent "PFS" pfs) | |
(for [s pfs :let [x (first s)]] | |
;; Please excuse the eye-burning amateurish debugging ... | |
(if (first (list (coll? x) (println indent "COND" (coll? x) x s))) | |
(partially-flatten-a-sequence-solution x (inc depth)) | |
s)))) | |
) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns fore-clojure.test.core | |
(:use [fore-clojure.core]) | |
(:use [clojure.test])) | |
(deftest can-partially-flatten-a-sequence | |
(is (= (partially-flatten-a-sequence-solution [[[[:a :b]]] [[:c :d]] [:e :f]]) | |
[[:a :b] [:c :d] [:e :f]]) " (= (partially-flatten-a-sequence-solution [[[[:a :b]]] [[:c :d]] [:e :f]]) | |
[[:a :b] [:c :d] [:e :f]]) " ) | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment