Skip to content

Instantly share code, notes, and snippets.

View syou6162's full-sized avatar

Yasuhisa Yoshida syou6162

View GitHub Profile
@syou6162
syou6162 / clj-seq-utils.md
Created September 6, 2012 00:24
Clojureのsequence関係のユーティリティ関数のまとめ

sequence関係のユーティリティ関数で自分がよく知らないものをまとめておく。

map-indexed

昔はindexedっていうそのまんまな関数があったけど、1.3くらいからなくなっていた。今はmap-indexedっていう関数を使う。よく使うのはこんな感じの使い方。

(map-indexed #(vector %1 %2) ["a" "b" "c" "d" "e"])
; ([0 "a"] [1 "b"] [2 "c"] [3 "d"] [4 "e"])

reductions

@syou6162
syou6162 / README.md
Last active October 19, 2017 01:58
Clojure performance tips

メモリ

個人的にはコレクションと配列との使用メモリ量比較が参考になりました.1M 個の long を格納するとして,vector だと 30MB, vector-of だと 9MB, 配列だと 8MB というのは覚えておいて損は無さそうです.案外 vector はメモリを食いません.

メモリ消費量を測定する用のマクロ

(defn current-total-memory-usage []
@syou6162
syou6162 / Jark.md
Created February 8, 2012 02:23
Jarkの使い方メモ

Jarkの使い方メモ

Clojureにはleiningenという便利なツールがありますが

  • 小さなスクリプト的な使い方をしたい
  • テストを小まめに走らせたい

などのときにlein自体の起動(というかjvmの起動)の遅さが気になってきます。どうにかしたいと思って調べていったところ、jarkというのが便利そうだったので、使い方を調べてみることにしました。

というか本家のほうでtest/script.clj --foo "a" --bar "b"という感じで動かせると書いてあるんですが、これだといくら頑張っても動かなかった。。。それとjark ns load XXX.cljもダメでした。なんでだろう。。。

@syou6162
syou6162 / Difference_between_cl_and_clojure.md
Created August 19, 2012 11:09
On Lispを読んでいて分からなかったCommon LispとClojureの違いについて自分なりにまとめていきます

Common Lispの関数

dolist

(dolist (var init-form result) S式 ... )

dolist は名前が示すように、リストに関係があります。最初に init-form を評価します。このとき、評価結果はリストでなければいけません。リスト以外の場合はエラーとなります。dolist は、このリストの要素を順番に変数 var に代入して S 式を評価します。リストの要素がなくなったら result を評価し、その値が dolist の返り値になります。次の例を見てください。
;; Clojureでのhashcodeの例
(hash "hoge") ; 3208229
;; clojureのvectorはよい
(hash [1 2 3]) ; 30817
;; javaの配列は毎回hashcodeが変わってしまうので注意
(hash (int-array [1 2 3])) ; 1628598432
(hash (int-array [1 2 3])) ; 1172445666
;; feature hashingの例
@syou6162
syou6162 / penn.clj
Created November 9, 2013 07:46
Clojure + Stanford ParserでS式を読み込んで色々操作する例
(import edu.stanford.nlp.trees.PennTreeReader)
(let [filename "/Users/yasuhisa/Desktop/PENN_TREEBANK3/PARSED/MRG/WSJ/00/WSJ_0001.MRG"]
(with-open [rdr (clojure.java.io/reader filename)]
(let [ptr (new PennTreeReader rdr)
trees (loop [result []]
(if-let [t (.readTree ptr)]
(recur (conj result t))
result))]
(for [^LabeledScoredTreeNode t trees]
#_(defdeps
[[org.clojure/clojure "1.5.1"]
[info.yasuhisay/clj-utils "0.1.1"]
[org.clojure/tools.cli "0.2.1"]])
(ns info.yasuhisay.dep-util
(:use [clojure.string :only (split)])
(:use [clj-utils.random :only (shuffle-with-random)])
(:require [clojure.tools.cli :as cli]))
@syou6162
syou6162 / shrinked-IMGP1852-2.jpg
Last active December 15, 2015 15:09
御所でお花見
shrinked-IMGP1852-2.jpg