タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

clojureに関するkanno_kannoのブックマーク (16)

  • Vimで始めるClojure生活 - blog.ieknir.com

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home path=($JAVA_HOME/bin $path) 確認。 % source ~/.zshenv % java -version java version "1.7.0_51" Java(TM) SE Runtime Environment (build 1.7.0_51-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode) Leiningen インストール brewでインストール。 % brew install leiningen 確認。 % lein version Leiningen 2.3.4 on Java 1.7.0_51 Java

  • Clojureにおけるデータ構造の抽象化を理解して独自のデータ構造を実装する Part 1: Collectionとは何か - 本当は怖いHPC

    この記事シリーズでは、プログラマもしくはライブラリ作者が独自のデータ構造を作成する際、それをClojureの組み込みデータ構造と同等に振る舞わせる方法について説明する。このPart 1では、Clojureの組み込みデータ構造がどのような抽象化とデザインの上に構築されているかを見てみよう。最後に、vector型と同じように振る舞うデータ型を定義してみる。 Part 0: 導入 Part 1: Collectionとは何か(ここ) Part 2: Sequenceとは何か Part 3: 独自Vector作成をマクロ化してみる おことわり: この記事は入門では無く、ClojureとJavaの知識をある程度仮定している。 末尾に示した参考文献を大いに参考にさせていただいた。 伝統的なLispにおけるデータ構造 伝統的なLispでは、基となるデータ構造はListである。そもそもLispという名前

    Clojureにおけるデータ構造の抽象化を理解して独自のデータ構造を実装する Part 1: Collectionとは何か - 本当は怖いHPC
    kanno_kanno
    kanno_kanno 2015/08/06
    分かりやすい
  • スレッドマクロを整理する

    スレッドマクロを整理する スレッドマクロって?スレッドマクロ(threading macro)は、Clojureのソースを人間に読みやすい形で書けるマクロで、現在のClojure 1.5.1には、結構な数のが用意されています。1.5で初めて追加されたものもありますし、まとめておくと、今後Clojureを始める人にも役立つかもしれないなあってことで、ブログ記事に書いておくことにしました。1.5で導入された新しいスレッドマクロも含めて既に知っている人には役に立たないのであしからず。 「スレッド」マクロといっても、並列プログラミングのスレッドとはまったく関係がないです。Clojureの -> や ->> のような、矢印系マクロの総称として使われています。Clojure 1.5.1では、次のスレッドマクロがあります。 ->->>as->some->some->>cond->cond->>基は -

    スレッドマクロを整理する
    kanno_kanno
    kanno_kanno 2014/08/19
    ->とか->>とか
  • Clojure(1.3-1.4)のリスト/ベクタ(シーケンス)操作関数一覧

    何回使っても、気づいたら、忘れてしまうリスト/ベクタ系関数について調べたメモ。 Clojureでは、プログラムの大半はシーケンス操作になる可能性が高い為か、Clojureのシーケンス操作関数は、かなり充実していますが、たくさんありすぎて、使いこなせているか不安になります。オフィシャルのリファレンスに関数一覧が乗っていますが、リストとベクタの操作に限定してまとめました。 ちなみに、リスト, ベクタ ⊆ シーケンスです。 zip(木構造), hashmap等は扱いません。 以下の9種類に大別。62個について調べました(まだあるかもしれません)。 生成系(7) cons系(3) getter系(21) observer系(8) map系(6) reduce系(2) filter系(3) リスト再構築(8) リスト並び替え(4)

  • Clojureで学ぶデータ構造:ハッシュテーブル - HackerNews翻訳してみた

    「HackerNews翻訳してみた」が POSTD (ポスト・ディー) としてリニューアルしました!この記事はここでも公開されています。 今回の記事は、Clojureでのハッシュテーブルの実装に関する記事です。長い記事で途中までの翻訳になりますがお楽しみください。 Original article: Data Structures in Clojure: Hash Tables by Max Countryman 前回のおさらい 前回の記事では連結リストについてお話ししました。具体的には、ミュータブルな片方向リストの実装方法を検証しましたね。片方向リストを選んだ理由についても、すでに説明済みです。ここで覚えておいてほしいのは、一般的にClojureではイミュータブルなデータ構造が用いられるということです。しかしミュータブルなデータ構造を利用した方が、アルゴリズムがよりシンプルで高速になるケ

    Clojureで学ぶデータ構造:ハッシュテーブル - HackerNews翻訳してみた
    kanno_kanno
    kanno_kanno 2014/03/19
    原文も読んでみたくなった
  • パスワード問合せシステムを作る (clojureのreducers) - Qiita

    現在のパスワードを教えてくれるからといって、「平文で保存してる!くぁwせdrftgyふじこlp‎」と脊髄反射してはいけません。 JALの6桁数字パスワードがどう格納されているか? 古いシステムなのでMD5でハッシュ化していると想定しますが、もちろんsaltは付けているでしょう。 さて、そんなパスワード保管方式で、現在のパスワード問合せに応答するシステムを作ってみます。 パスワードを「567890」、saltを「hoge」として、データベースには"hoge$567890"のMD5値"4b364677946ccf79f841114e73ccaf4f"が格納されているとします。 総当りしてみましょう。 (ns six-length.core (:require [clojure.core.reducers :as r]) (:import [java.security MessageDigest

    パスワード問合せシステムを作る (clojureのreducers) - Qiita
  • Clojureのprotocol実践

    Clojureのprotocol実践 自社開発ではClojureを中心に使っていて、ユーザーが増えて欲しい気持ちもあって、Clojureのテキスト的なものを書いていては挫折、などを繰り返してました。キリがないので、テキストのことは気長に構えて、開発中に気がついたことはどんどんブログに書いて行こうと思います。 手始めに、最近やっと「実用的」という意味で使えるようになったかなーと思えた、「プロトコル」について。 Clojureのプロトコルは、JavaでいうところのInterfaceのようなものです。型名称と関数定義だけを束ねたものです。defprotocolによってプロトコルを定義することができます。 Javaプログラマ歴が長いので「まあInterfaceなら余裕だな」と構えていましたが、意外と使い方が難しい。以下、Javaプログラマ的感覚でプロトコルを使うと使いにくくなりかねない点について書

    Clojureのprotocol実践
    kanno_kanno
    kanno_kanno 2014/02/06
    Clojureの勉強止まっているけど、やっぱやりたくなってくる
  • Light Tableの使い方 (序章) - Qiita

    ちょっと前にkickstarterで20万ドルを集めて話題となったLight TableというIDEですが、順調に開発が進んでいてClojureアプリの開発に十分使えるレベルになっています。 完成したあかつきには、どういうライセンス体系になるのか不明ですが、現状は「Try the alpha」という位置づけで、自由に試してみることができます。 上記サイトから、Mac OSX、Windiws、Linux それぞれパッケージがあるのでダウンロードしてインストールします。 起動するとオシャレ感ただようウィンドウが開きますが、Clojureのコードを動かすために、バックエンドでJarファイルを取りに行ったりするので、プロキシ環境下で使う場合には、環境変数http_proxyとhttps_proxyを設定しておくとよいかと思います。 Clojureを試してみたい場合には、メニューのView -> C

    Light Tableの使い方 (序章) - Qiita
    kanno_kanno
    kanno_kanno 2013/12/21
    ありがたい
  • Clojure勉強日記(その15 関数型プログラミングの概念 - 夢とガラクタの集積場

    こんにちは。シーケンスについて一段落し、ついに筋っぽい個所に入ってきます。 関数型プログラミング=FPとして以後書きます。 FPによるコードが書きやすく、読みやすく、テストしやすく、再利用しやすい理由として、 下記の理由があげられています。 純粋な関数 永続的なデータ構造 遅延評価と再帰 参照透過性 純粋な関数 純粋な関数とは副作用を持たない関数。 引数以外のものに依存せず、外界に影響を及ぼすのは返り値を通してのみという関数のことをさす。 何かに出力することでも副作用となるため、出来ることはある意味限られる。 但し、非常に読みやすく強固な関数になるのは確かでしょうね。 「引数以外のものに依存せず」とあるため、引数以外の変数を使うと当然ながら崩れます。 変数の値によって引数の値が同じであっても返り値が変わる可能性があるわけですから。 永続的なデータ構造 永続的=変更不可なデータ構造はFPと

    Clojure勉強日記(その15 関数型プログラミングの概念 - 夢とガラクタの集積場
    kanno_kanno
    kanno_kanno 2013/12/15
    再帰や計算量
  • Clojureの"->"マクロ(右矢印みたいなやつ) @ t100のプログラミング脱出作戦

    Clojureのサンプルコードを見ていたら、時々 (-> xxx yyy) みたいなコードに出会うことがあります。 これ、、、なんですのん。ヽ(;´д`)ノ プログラミングClojureにも書いてないし、グーグル先生に聞こうにも記号だからうまく検索できな、、、 と思ったら、「Clojure arrow」 のキーワードで遂に解説ページを発見!(・∀・)わーい Understanding the Clojure -> macro どうも、関数を連続で呼び出す為のマクロみたいです。 上記ページをかいつまむと、こんな感じです。 例えば、こんな式があったとします。 (-> (Math/sqrt 25) int list) これは、次のように解釈されます。 1.(Math/sqrt 25) が実行されます。 25 の平方根で、5.0 が戻り値です。(`・ω・´)9m 2.int 関数に5.0が渡され

    kanno_kanno
    kanno_kanno 2013/11/20
    関数を連続で呼び出すためのマクロ
  • Can I clean the repl?

  • 実践(?)Compojure

    この記事はClojrure Advent Calendar 2011の参加記事です。 今回はCompojureでウェブアプリを作る際に使える ある程度実践的(?)なTipsなどを紹介します。 長文なのでご注意くださいCompojureとは†CompojureはClojure向けの軽量ウェブフレームワークです。 Clojure版Sinatraのようなフレームワークでウェブアプリをシンプルに記述できることが特徴で、ringというウェブアプリケーションライブラリがベースになっています。 Hello World†最初にベースとなるHelloWorldを作ります。 HelloWorldの作り方自体はググれば他にたくさん記事が見つかると思うので 詳細な説明は割愛して、コード内のコメントで軽く補足します。 なおこれから先はLeiningenがインストール済みであることを前提にしています。 プロジェクト

    実践(?)Compojure
  • Clojureでテストを書く (with TDD) - What is it, naokirin?

    Clojureでテストを書く、というのはclojure.testというものを用いることで簡単に達成できます。 今回はTDDを進めていく体で、テストの書き方を紹介していこうと思います。 お題は簡単に行うためにFizzBuzz*1です。FizzBuzzについてはWeb上に多く紹介があると思いますので割愛させていただきます。 これからコードを書いていきますが、コードはdiffのように追加した行は"+"、削除された行は"-"をつけることにします。 TDD最初の一歩とisマクロ TDDの最初は、「まずはテストから」ですよね。 +(ns fizzbuzz + (:use clojure.test)) + +(is (= 1 (say 1))) ここでは"say"と言う関数が、引数に1を受け取ると1が期待されるということを書いています。 これを実行すると java.lang.Exception: Una

    Clojureでテストを書く (with TDD) - What is it, naokirin?
    kanno_kanno
    kanno_kanno 2013/10/22
    かっけえ
  • Clojure事始め〜Leiningen,VimClojure〜

    Mar 17, 2012 最近Clojureにはまってます。駆け出しLisperを自認する自分としてはナウいLisp方言のClojureに手を出さないわけにはいかないのです。 布教の一貫として、Clojureを(Macで)スタートするために必要な諸事項をまとめていきましょう。何分過去の色褪せた記憶なので間違って部分もあるかもしませんが、大体は今でも通用するはずです。 アジェンダ Leiningenのインストール VimClojureのセットアップ Lieningen Leiningenとは、Clojureのビルドツールです。必要なライブラリの依存関係を解決してくれたりするやつ。 これのセットアップはとても簡単です。 % brew install Leiningen これだけです。ちなみにclojure自体のインストールはleiningenが勝手にやってくれるので必要無いです。むしろ初学者は

  • Java と比べて Clojure が 3 倍以上遅いというのは何かの間違いではないかと思って確かめたら,やっぱり間違いだった件 - tnoda-clojure

    マルチコアプログラミングの概念と Java 8/Scala/Clojure での書き方,および,各プログラミング言語間での比較記事がはてなブックマークで 93 ブクマ(執筆時点)を集めており,人気となっています. マルチコア時代のプログラマは関数脳になろう〜Scala・Clojure〜 - Tech-Sketch 記事を読んでみるとなるほど分かりやすく,各プログラミング言語の違いも比較的すっと頭に入ってくる良い記事でした.この記事を書いた作者に敬意を表します. しかし,まとめのところに書かれている実行時間比較を見てみると,何かがおかしいのです. (元記事,まとめの表からの引用) Java7 Java8 Scala Clojure 非並列処理実時間 0m32.304s 0m32.511s 0m50.478s 1m38.138s CPU時間 0m33.730s 0m35.842s 2m12.2

    Java と比べて Clojure が 3 倍以上遅いというのは何かの間違いではないかと思って確かめたら,やっぱり間違いだった件 - tnoda-clojure
    kanno_kanno
    kanno_kanno 2013/08/27
    丁寧な記事だ
  • Macros in Clojure

    Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...AboutYouGmbH

    Macros in Clojure
  • 1