2014-01-01から1年間の記事一覧

Clojure Code Quality Tools

Clojure Code Quality Tools Clojureのソースコードを書くときの便利ツールの紹介です。 使い方はリンク先を見てください。 lein deps :tree lein ancient (lein ancient profiles) lein kibit lein eastwood lein bikeshed lein omni lein slamhound lein c…

ClojureScriptが来ているな〜と思う記事

最近、Clojureの中でもClojureScriptが流行っている気配がしています。 今日、RSSをチェックしただけでも以下の記事が目に付きました。 Om interop with 3rd party JS libs Using ClojureScript REPL from Light Table Zero downtime Clojure deployments プ…

Green Eggs and Transducers

Green Eggs and Transducers Transducerの説明です。かなり分かり易く書いてくれているみたいなのですが、私にはまだ分りません。

General Purpose Utilities Library

hara General Purpose Utilities Library なんでも屋さん的なツール。

特定派遣26業務

今春、特定派遣がなくなったというニュースを見ておどろいていましたが、 どうやらなくなっていませんでした。 特定派遣26業務 多くの業者が消えるものと思っていましたが、 生き残りがたくさんいます! 26業務についての例外を設けて、そのなかに、「情報処…

Let's Write a Transducer!

Let's Write a Transducer! Clojure v1.7から追加される新機能であるTransducerについての記事です。 関数として機能を完全に定義するのではなくて、機能の一部を定義してそれを使い回すような感じです。 分りにくいので参考サイトも確認が必要です。 参考 T…

Clojure friendly word definitions in Emacs

Clojure friendly word definitions in Emacs (dolist (c (string-to-list ":_-?!#*")) (modify-syntax-entry c "w" emacs-lisp-mode-syntax-table)) EmacsでClojureのソースを編集するときに便利になる設定です。 単語の区切りについての設定で、単語の消去…

オンラインで誰かとペアプロができる

オンラインで誰かとペアプロができる スカイプなみに凄い。 オンラインで動画やPC画面を共有できるだけでなく、指定しなくても誰かが相手をしてくれる所が凄い。 Pair Well is Live, Check it out Pair Wellで待ち合わせして Zoom Usで、PC画面やwebカムで通…

Clojureで大きな数を扱うときにオーバーフローを防ぐには

桁が大きい数の場合、オーバーフローを防ぐために対数をとるとよい のですが、Clojureの場合どうすば、logが使えるのか疑問におもったので 検索したら見つけました。 Logarithm with base 2 (log2) (defn log2 [n] (/ (Math/log n) (Math/log 2)))

Lazy seq for Pascal’s triangle in Clojure

Lazy seq for Pascal’s triangle in Clojure パスカルの三角形を生成する関数の実装です。 1 1 1 1 2 1 1 3 3 1

4clojure #72 Rearranging Code: ->>

4clojure #72 Rearranging Code: ->> ->>マクロは複数のフォームを経由して式xをつなげる。 はじめに、xは第一フォームに最後として挿入され、 それがすでにリストでなければリストを生成する。 それから、第一フォームは第二フォームへ最後のアイテムとして…

July 2014 London Clojure Dojo at ThoughtWorks

July 2014 London Clojure Dojo at ThoughtWorks ロンドンでClojureの道場をやっているらしいです。人数は10人ほどのようです。

プログラムは書いたとおりに動くのか

プログラムは書いたとおりに動くのか 入力データの仕様と出力データの仕様が決まってからプログラムが書かれるのではなく、 プログラムを書きながら、バージョンアップを重ねながら、 当初見えなかったデータの「かたち」を彫り出して、 思いもかけなかった…

4clojure #71 Rearranging Code: ->

4clojure #71 Rearranging Code: -> -> macroは複数のフォームを経由して式xを通す。 はじめに、xは第一フォームに第二要素として挿入され、 すでにリストでない場合、そのリストを作る。 そして、第一フォームは第二フォームに第二要素として挿入され、 フ…

4clojure #70 Word Sorting

4clojure #70 Word Sorting センテンスを分割してソートした単語リストにする関数を作る。 大文字小文字はソート順に関係なく、句読点も無視すること。 (= (__ "Have a nice day.") ["a" "day" "Have" "nice"]) (= (__ "Clojure is a fun language!") ["a" "…

4clojure #69 Merge with a Function

4clojure #69 Merge with a Function 関数fといくつかのマップを引数に取る関数を作る。 その関数は、一番目のマップにconjしたマップの残りから構成されたマップを返す。 複数のマップにひとつのキーがあるとき、後ろからのマッピングは(f 結果の値 後の値)…

Clojreの入門書

Clojreの入門書です。PDFやepub、mobi形式などの本を購入することもできます。 とても丁寧でよいかもです。 Clojure for the Brave and True ( a Book for Beginners )

4clojure #67 Prime Numbers

4clojure #67 Prime Numbers 最初のx個の素数を返す関数を作る。 (= (__ 2) [2 3]) (= (__ 5) [2 3 5 7 11]) (= (last (__ 100)) 541) はじめは、reduceのClojureDocをみて、素数列をつくろうとしましたが、 うまくいかなかったので、prime?を作ってみました…

4clojure #66 Greatest Common Divisor

4clojure #66 Greatest Common Divisor 最大公約数を求める関数を作る。 (= (__ 2 4) 2) (= (__ 10 5) 5) (= (__ 5 7) 1) (= (__ 1023 858) 33) a、bの最大公約数とは、aでもbでも割り切れる数のうちの最大値だから ((fn my-gcd [a b] (let [m (max a b)] (l…

4clojure #65 Black Box Testing

4clojure #65 Black Box Testing シーケンスの種類(:map :set :list :vector)を答える。 ポイントはそれらを調べ、動作を理解することです。 ただし、以下は使用禁止。 class type Class vector? sequential? list? seq? map? set? instance? getClass (= :m…

4clojure #63 Group a Sequence

4clojure #63 Group a Sequence 関数fとシーケンスsを与えてマップを返す関数を作る。 キーはsの各項にfをapplyした値です。 各キーに対応する値はsの順番で連続する項の続くベクターです。 ※ group-byは使用禁止。 (= (__ #(> % 5) [1 3 6 8]) {false [1 3]…

Adam Bardさん特選記事

My Top Clojure Articles Adam Bardさんが書いたブログ記事のなかから、特選記事をまとめたものです。

4clojure #62 Re-implement Iterate

4clojure #62 Re-implement Iterate 関数fと初期値xをとり、 無限な遅延シーケンスx, (f x), (f (f x)), (f (f (f x)))...を返す関数を作る。 ※ iterateは使用禁止。 (= (take 5 (__ #(* 2 %) 1)) [1 2 4 8 16]) (= (take 100 (__ inc 0)) (take 100 (range)…

4clojure #61 Map Construction

4clojure #61 Map Construction ベクタのkeysとvaluesをとり、それらからマップを生成する関数を作る。 ※ zipmapは使用禁止。 (= (__ [:a :b :c] [1 2 3]) {:a 1, :b 2, :c 3}) (= (__ [1 2 3 4] ["one" "two" "three"]) {1 "one", 2 "two", 3 "three"}) (= …

4clojure #60 Sequence Reductions

4clojure #60 Sequence Reductions reduceのような動きをする関数を書く。 ただし、縮小する各中間の値を返すこと。 2か3引数をとり、遅延シーケンスを返すこと。 ※ reductions使用禁止 reductionsを使えばそのまま解決できました。 (= (take 5 (__ + (ran…

4clojure #59 Juxtaposition

4clojure #59 Juxtaposition 一連の関数(1)を引数(funcs)にとり、新しい関数(2)を返す関数(3)を作る。 関数(2)は引数(args)を、一連の関数(1orfuncs)へ左から右へ apply した 結果をふくむ seq を返す。 ※ juxt 使用禁止。 (= [21 6 1] ((__ + max min) 2 3 …

4clojure #58 Function Composition

4clojure #58 Function Composition 関数を組み立てる関数を求める。 パラメーターリストは複数の関数で、求める関数は、それらを右から左にapplyさせます。 ※ compは使用禁止。 (= [3 2 1] ((__ rest reverse) [1 2 3 4])) (= 5 ((__ (partial + 3) second)…

4clojure #53 Longest Increasing Sub-Seq

#53 Longest Increasing Sub-Seq (= (__ [1 0 1 2 3 0 4 5]) [0 1 2 3]) (= (__ [5 6 1 3 2 7]) [5 6]) (= (__ [2 3 3 4 5]) [3 4 5]) (= (__ [7 6 5 4]) []) 難しい。seqのなかで、1ずつ増加している箇所で、最長のものを求める。 シーケンス機能を利用して…

DIY NoSQL part deux: interchangeable parts

DIY NoSQL part deux: interchangeable parts Clojureでtwitter風webアプリ制作を例にして、プロトコルを使うアイディアの記事です。 参考サイトですでにtwitter風webアプリはつくってありますが、その実装には問題があるとして第2弾の記事になっています。…

Steps to Setup Datomic on a Cassandra Cluster on MacOS Mavericks using Virtualbox

Steps to Setup Datomic on a Cassandra Cluster on MacOS Mavericks using Virtualbox Rich HickyによるDatomicを自分のmacで動作させるための手順書です。Cassandraを駆動する所までは別記事になっています。 詳細な手順なのでとても参考になります。