(このエントリは Clojure Contrib Library Advent Calendar 3日目の記事です。) はじめに 3日目の今日はdata.jsonについてです。 data.jsonは名前が示すとおり,JSON形式の読み書きをするために使います。以前はclojure.contrib.jsonという名前でした。 ひと昔前は,ClojureでJSONというと,clojure-jsonやclj-json,cheshireなどいろいろなライブラリが競合していました。現在では,data.jsonがデファクトスタンダード的な位置にあり,Web関連のアプリケーションを中心に広く使われています。初日の記事の Clojure Contrib ライブラリとは に記載したランキングを見ても,data.jsonがよく使われていることが分かります。 このエントリでは,data.jsonの使い方を説明し
みよ!この盃は再び空になろうとし、そしてツァラトゥストラはふたたび人間になろうとしている ── ニーチェ:ツァラトゥストラはこう語った この記事はClojure Advent Calender (全部俺) 1日目の記事です。 始めに 今日から一人によるClojure Advent Calenderを始めます。実は2011年にも、未完ながらもPythonに関する記事を一日一つあげるということをやっていました。2012年は私用によって、Advent Calender自体をスルーしていたのですが、今回の言語のテーマとしてClojureを選びました。 Clojureは、Scalaと一緒で、一般的にはJVM上で動くLisp方言という認識の人が多いと思いますし、関数型的なアプローチを使うということで、お互いにセットとして語れることも、ままあるようです。とはいえ、日本だと、どちらかというとScalaのほ
mori A library for using ClojureScript's persistent data structures and supporting API from the comfort of vanilla JavaScript. Rationale JavaScript is a powerful and flexible dynamic programming language with a beautiful simple associative model at its core. However this design comes at the cost of ubiquitous mutability. Mori embraces the simple associative model but leaves mutability behind. Mori
Clojureを実際の開発で使いたい場合、まずはチームメイトや上司を説得できなければ使えません。『Clojure』というキーワードで検索してここに辿り着くくらいですから、読者の皆様はClojureを知りたい、使ってみたいと思っているかもしれませんが、他の人はそうとは限りません。 なので、まずは自分自身が経営的な視点でClojureにどのようなメリットがあるのかを理解し、説明できるようにしておく必要があると思います。この文章は、その考え方の一つです。 なぜClojure? それでは、Clojure言語のプログラマ向けの説明を、経営的な視点から見たメリットとして明らかにしていきましょう。 Clojureの特徴1: 文法要素を追加・変更できる ある言語を使っている時、自分の目的を達成するために他の言語の構文が欲しくなることがよくあります。プログラムの一部だけRなどの統計分析言語を使いたいとか、ゲ
ClojureScriptという選択肢 Presentation Transcript ClojureScript という選択肢 2013/10/19 大なごやJS VOL.7 前田康行(@maeda_) 自己紹介 前田康行 (@maeda_) 名古屋在住のフリーランス 好きな言語 • Scala • Smalltalk 近況 • ひょんなことからRubyの仕事してます。 今流行りのaltJS 今回のテーマ ClojureScriptはこっち側ですよって話 XX言語で書いて、 XX言語で書いて、 JavaScriptに変換できる <<< (超えられる壁) <<< JavaScriptの代用となる 大事な観点 言語的なメリットだけでなく、既存のJSのエコシステムが活用できる or 代用があるか? ・既存のライブラリやAPI(JSONPとか)との親和性 ・開発周りのツール類(Gruntと
ご挨拶 ご無沙汰しとります,大学生になってからLinux一筋で生きていこうと決めておりましたが,遂にWindowsに折れてしまったBOXPです.Officeの壁は想像以上に厚かったです… それはさておき,Twitterで私が時々ぼやいておりますが,のんびり作っていた自作のTwitterクライアントがある程度形になって来たので,ここらで一度公開したいと思います. 「Grimoire」について Grimoireは,コンソールライクに操作しやすいように設計されているTwitterクライアントです. マウス操作を使用してツイートをお気に入りにしたり,リツイートして拡散する事は出来ますが,それらはあくまでもコマンドをボタンが呼び出しているに過ぎません. そのため,操作の殆どはS式をタイプして実行する事になりますが,S式を学習していなくても必要なコマンドを幾つか覚えているだけで十分使用可能です. 以下
CodeIQで次のような問題(通称「Restricted Words」問題)が出されていました。 標準出力に Hello World と出力するプログラムを作成して下さい。 ただし、数値、文字及び文字列リテラルを解答に含めることはできません。 Perlのqqやqw、Rubyの%Q、%q、%wなども避けたほうが評価が高くなります。 言語仕様をフル活用して下さい! ログイン│CodeIQ 9/19に解答期限が切れて,自分の解答を公開することができるようになったので, Clojureで書いて提出した解答について適当に紹介してみようと思います。 Clojureで解答を考えるにあたって,以下の方針を立てました: シンボルやキーワード,正規表現などのリテラルも使用しない 文字列を使えるのとほとんど変わらず,チートっぽい マクロを使用しない シンボルが使いたい放題になるのでマクロも使わない 「文字コード
前回 の記事では、関数型プログラミングの概念とJava8による実装例を示しました。しかしJava8のリリースは来年まで延期されてしまったため、今すぐ試してみるには少しハードルが高いかもしれません。 そこで今回は、Java7のJVM上で動作する代表的な関数型プログラミング言語、 Scala と Clojure を紹介します。 Scalaとは では、 Scala から紹介しましょう。 ScalaはJVM上で動作するプログラミング言語で、関数型の特徴とオブジェクト指向の特徴を合わせ持った、欲張りな言語です。 JVM上で動作するため、既存の膨大なJavaライブラリをそのまま流用でき、JVMのパフォーマンスチューニングノウハウを最大限活用することができます。またJavaよりも豊富な記述形式を持ちながらもJavaオブジェクトをそのまま扱え、強力な型推論を持った静的型付け言語でもあるため、定型的で冗
clojure.orgには,Clojureについて次のような説明がある。 Clojure provides easy access to the Java frameworks, with optional type hints and type inference, to ensure that calls to Java can avoid reflection. http://clojure.org/ この型推論(type inference)は,Clojureの説明でたまに名前だけは出てくるものの,その実態についての説明にはほとんどお目にかかったことがない。そこで今回は,Clojureの型推論の機能をClojureから触れるようにして遊んでみよう。 Clojureになぜ型推論が必要か まずはじめに注意しておかないといけないのは,Clojureの型推論はMLやHaskellなどの静的
Land of Lispの作者が作っているClojureScriptのフレームワーク、WebFUIが面白い。僕がJS書くときによく使うPastaとよく似ているので盗めるところは盗みたい。 Clojure/conjでの動画 githubリポジトリ 状態 イミュータブルな辞書で状態を表現して、リファレンスを張り替えることで状態の遷移を行うところはPastaと共通。この方法はよくあるオブジェクト指向のMVCフレームワークで行われるミュータブルな辞書をその場で書き換える方法と比べて、 後で必要になるデータをcloneなしで取っておける.(もちろん必要ない物はGCされる) 同じ状態の時に必ず同じUIになることを保証できる. (上記に関連して、)アプリの状態をそのままサーバなりローカルストレージなりに突っ込んで、そこからUIを含め完全に状態を復元できる などの利点がある。 状態の辞書を作るのにパッチ(
Clojure には .. というマクロがあり,Java のメソッド呼び出し だけ にしか使えないのですが,同じような -> マクロは Java のメソッド呼び出しにも Clojure 関数の呼び出しにも使えます. user> (.. System (getProperties) (get "os.name")) "Mac OS X" の .. を -> と置き換えても, user> (-> (System/getProperties) (get "os.name")) "Mac OS X" と結果は同じになります.もう全部 -> マクロだけでいいんじゃないかな. 違いに気づきましたか?実は,先の例では評価結果は同じなのですが,マクロ展開の結果は異なります.分かりやすく書くと, ..(.get (System/getProerties) "os.name")->(get (System/g
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く