Skip to content

Instantly share code, notes, and snippets.

@hugoduncan
hugoduncan / gist:4169930
Created November 29, 2012 15:48
repeated let
(defmacro as
"Binds name to the result of each of the forms. Within each form the previous
binding is available. Returns the final binding."
[name & forms]
`(let [~@(interleave (repeat name) forms)]
~name))
;; (as a
;; 1
;; (+ a 2))
@hugoduncan
hugoduncan / gist:4169539
Created November 29, 2012 14:48
Modified core threading macros
(defmacro when->
"When expr is logical true, threads it into the first form (via ->),
and when that result is logical true, through the next etc"
{:added "1.5"}
[expr & forms]
(let [[g forms] (if (vector? (first forms))
[(ffirst forms) (rest forms)]
[(gensym) forms])
pstep (fn [step] `(when ~g (-> ~g ~step)))]
`(let [~g ~expr
@hugoduncan
hugoduncan / gist:4140774
Created November 24, 2012 18:18
lein not saying what failed
> lein deps :tree
Performing task 'deps' with profile(s): 'default,dev'
This could be due to a typo in :dependencies or network issues.
Error encountered performing task 'deps' with profile(s): 'default,dev'
Could not resolve dependencies
>
@hugoduncan
hugoduncan / gist:4138096
Created November 24, 2012 02:25
lb being called on :clojure.core.logic/not-found
No implementation of method: :lb of protocol: #'clojure.core.logic/IInterval found for class: clojure.lang.Keyword
java.lang.IllegalArgumentException
Restarts:
0: [CONTINUE] Pass exception to program
1: [ABORT] Abort request.
2: [IGNORE] Do not enter debugger for this exception type
3: [IGNORE-MSG] Do not enter debugger for this exception message
4: [IGNORE-CATCH] Do not enter debugger for exceptions with catch location clojure.lang.LazySeq.*
5: [IGNORE-LOC] Do not enter debugger for exceptions with throw location clojure.core.*
@hugoduncan
hugoduncan / gist:4138017
Created November 24, 2012 01:49
lb being called on :clojure.core.logic/not-found
No implementation of method: :lb of protocol: #'clojure.core.logic/IInterval found for class: clojure.lang.Keyword
java.lang.IllegalArgumentException
Restarts:
0: [CONTINUE] Pass exception to program
1: [ABORT] Abort request.
2: [IGNORE] Do not enter debugger for this exception type
3: [IGNORE-MSG] Do not enter debugger for this exception message
4: [IGNORE-CATCH] Do not enter debugger for exceptions with catch location clojure.lang.LazySeq.*
5: [IGNORE-LOC] Do not enter debugger for exceptions with throw location clojure.core.*
@hugoduncan
hugoduncan / 1-rewrite_usage.clj
Created November 24, 2012 00:19 — forked from lynaghk/1-rewrite_usage.clj
Questions about fancy map rewriting via core.logic
(rewrite-layer
{:mapping {:y :mpg}
:stat (stat/quantiles)})
;; =>
{:mapping {:upper :q75, :min :min, :lower :q25, :max :max, :middle :q50, :y :mpg}
:stat #com.keminglabs/c2po$stat$quantiles {:dimension :mpg}
:geom #com.keminglabs/c2po$geom$boxplot {}}
@hugoduncan
hugoduncan / gist:4137374
Created November 23, 2012 21:21
An issue with core.logic prep?
(run* [q]
(fresh [pattern production guards rule rule-name]
(membero
{:pattern pattern :production production}
[{:pattern (partial-map {:a :clojure.core.logic/not-found :x 1})
:production {:a 1}}
{:pattern (partial-map {:a '?a :c :clojure.core.logic/not-found})
:production {:c '(* ?a 2)}}])
(== {:x 1} pattern)
(== q production)))
@hugoduncan
hugoduncan / gist:4060702
Created November 12, 2012 17:31
logback config for per host log files in pallet 0.8
<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator>
<key>target</key>
<defaultValue>unspecified</defaultValue>
</discriminator>
<sift>
<appender name="FILE-${target}" class="ch.qos.logback.core.FileAppender">
<file>logs/target-${target}.log</file>
<append>false</append>
<encoder>
@hugoduncan
hugoduncan / gist:3980590
Created October 30, 2012 14:41
profile for jclouds
{:dependencies
[[org.cloudhoist/pallet-jclouds "1.5.0-SNAPSHOT"]
[org.jclouds.provider/aws-ec2 "1.5.2"]
[org.jclouds.provider/aws-s3 "1.5.2"]
[org.jclouds.driver/jclouds-slf4j "1.5.2"
;; the declared version is old and can overrule the resolved version
:exclusions [org.slf4j/slf4j-api]]
[org.jclouds.driver/jclouds-sshj "1.5.2"]]}
@hugoduncan
hugoduncan / gist:3315438
Created August 10, 2012 16:39
nrepl middleware reuse
(let [s @(#'clojure.tools.nrepl.middleware.session/create-session
(:transport connection)
@(:bindings connection))
out (#'clojure.tools.nrepl.middleware.session/session-out
:out new-session (:transport connection))
err (#'clojure.tools.nrepl.middleware.session/session-out
:err new-session (:transport connection))]
....)
(binding [clojure.tools.nrepl.middleware.interruptible-eval/*msg* msg]