Skip to content

Instantly share code, notes, and snippets.

View syou6162's full-sized avatar

Yasuhisa Yoshida syou6162

View GitHub Profile
@syou6162
syou6162 / simple_seesaw.clj
Created May 23, 2012 12:55
seesawで線を描画するための最小構成(と思われるもの)。lineをどう引くかだけ見てもらって、実際は100とかの数字をSICPの中の関数とかで計算していくのがメインとなっています
(use 'seesaw.core)
(use 'seesaw.graphics)
(def my-line-style (style :foreground :black))
(def f (frame :title "My first example of Picture Language!!!"
:content
(canvas :id :canvas
:background :white
:size [640 :by 480]
@syou6162
syou6162 / conditions_filter.clj
Created May 22, 2012 12:36
条件をどんどん付けてフィルタリングするのを簡単にするための何か
;; macroで書く必要がなかった...
;; (defmacro gen-bool-fns
;; [key-value-pairs]
;; `(loop [fns# []
;; pairs# (partition 2 ~key-value-pairs)]
;; (if (empty? pairs#)
;; fns#
;; (recur
;; (conj fns# (let [[k# v#] (first pairs#)]
;; (fn [x#] (= (k# x#) v#))))
@syou6162
syou6162 / gist:2241779
Created March 29, 2012 18:39 — forked from CampingScorpion/gist:2233328
state monad as a way to hold 'world' state
(defmacro defworld [name bindings & body]
`(defn ~name ~bindings
(fn [~'world]
(println ~'world)
~@body)))
(defmacro with-world [& body]
`(domonad state-m
~@body))
@syou6162
syou6162 / example_of_character_unicode_block.clj
Created February 21, 2012 11:56
ClojureでJavaのUnicodeBlockを使って文字種を判定する方法について
;; see also http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/Character.UnicodeBlock.html
(import 'java.lang.Character$UnicodeBlock)
;; java.lang.Character$UnicodeBlock
(Character$UnicodeBlock/of \u3042)
;; #<UnicodeBlock HIRAGANA>
(map #(Character$UnicodeBlock/of %) "日本だ")
;; (#<UnicodeBlock CJK_UNIFIED_IDEOGRAPHS> #<UnicodeBlock CJK_UNIFIED_IDEOGRAPHS> #<UnicodeBlock HIRAGANA>)
@syou6162
syou6162 / simple_continuation_example_in_clojure.clj
Created February 18, 2012 14:57
Clojureでの継続の簡単な例
;; プログラミングGaucheの継続の例をClojureで書いてみる
;; 継続がそもそもどういう概念なのか理解できると...いいな
;; まずCall-Return方式
(defn find-fold [pred? proc seed lis]
(cond (empty? lis) seed
(pred? (first lis)) (let [seed2 (proc (first lis) seed)]
(find-fold pred? proc seed2 (rest lis)))
:else (find-fold pred? proc seed (rest lis))))
@syou6162
syou6162 / tree_iterator_in_ruby.rb
Created February 14, 2012 10:48
Treeのオブジェクトに対してeachでごにょごにょしたいときのテンプレート的な何か
class Tree
attr_accessor :val, :level, :l, :r
def initialize(val, level, l, r)
@val = val; @level = level; @l = l; @r = r
end
def each
stack = []
stack.push self
explored = []
while !stack.empty?
@syou6162
syou6162 / example_of_dynamic_vars_in_sqrt.clj
Created February 11, 2012 10:06
SICPで同じような関数を定義、その度に名前を付け変えるのは結構面倒なんだけど、clojureだとdynamic varsを使うとその場で関数の定義を変えれて便利だなーと思った例
(defn average [x y]
(/ (+ x y) 2))
(defn improve [guess x]
(average guess (/ x guess)))
(defn square [x] (* x x))
(defn good-enough? [guess x]
(< (Math/abs (- (square guess) x)) 0.001))
@syou6162
syou6162 / example_of_download_images_from_hatena_fotolife.clj
Created February 10, 2012 08:42
はてなフォトライフから並行に画像をダウンロードしてくる例
(use '[clojure.java.io :only (copy output-stream)])
(def pic-url "http://blog.stackoverflow.com/wp-content/uploads/justice-league-small.jpg")
(defn input-stream [pic-url]
(-> pic-url java.net.URL. .openConnection .getInputStream))
(defn get-byte-array-stream [input-stream]
(let [byte-array-stream (java.io.ByteArrayOutputStream.)]
(copy input-stream byte-array-stream)
@syou6162
syou6162 / lein_plugins.md
Created February 8, 2012 23:55
leinのpluginリスト

どのマシンにどのバージョンをインストールしたかとかを覚えていないのでメモ。

lein plugin install swank-clojure 1.3.4
lein plugin install oauth-clj 0.0.2
lein plugin install org.danlarkin/clojure-json "1.2-SNAPSHOT"
lein plugin install incanter "1.2.3-SNAPSHOT"
lein plugin install clojure-opennlp "0.1.7"
lein plugin install clucy "0.2.2"
lein plugin install lein-repls 1.6.0