MEGA provides free cloud storage with convenient and powerful always-on privacy. Claim your free 20GB now
7/27に開かれたLisp Meetup #30で「Clojureシンタックスハイライター開発から考えるこれからのLispに必要なもの」というタイトルで話してきました。 Clojureシンタックスハイライター開発から考えるこれからのLispに必要なもの from sohta 内容としては、去年のShibuya.lispのテクニカルトークで話した内容を重点をズラして焼き直したものです。終わった後にいくつか意見をいただきましたが、絶対数は多くないのでどう受け止められているのかはちょっと気になるところです。 「これからのLispに必要なもの」とタイトルにはあるものの、具体的に「これが必要だ」と言えてないのが残念な感じですが。。。この発表でいいたかったのは、「LispコードをCASEツールで解析できる対象にしていきませんか」という提案です。 ICSE勉強会なんかの話を聞いていると、他の言語(特にJ
TL;DR As noted earlier, transducers can be properly annotated in Clojure using core.typed and they probably should be. But... there are a few tricks necessary to make it work. Transducers in Scala require tricks too, but different ones. Oh, but they're so lovely in Haskell. Update 2015-01-12 Were you led here by Clojure Gazette? Eric Normand is usually more discriminating, but don't worry, this wi
限定継続(shift/reset)shiftはresetまでの継続をとる (reset (+ (shift k (k 1)) 2)) ; => 3 ; k = (fn [x] (+ x 2)) 実装shiftは継続コンテキストを返す resetはcallによる継続渡し形式に変換 callは継続を適用する (macroexpand (quote (reset (+ (shift k (k 1)) 2)))) (cont.core/call + (fn* [G__3646] (cont.core/call (new cont.core.Context (fn* [k] (k 1))) (fn* [G__3647] (cont.core/call (G__3646 G__3647 2) (fn* [G__3645] G__3645)))))) 例非決定性計算 (defn amb [& xs] (
7. 精度よくないといけないのか? • 重要なものを強調し、重要でないものを目立た なくすることでコードを読む効率を上げる • 人は誤ったハイライトを繰り返し目にすること でハイライトを無視するようになる[要出典] 8. そんなに簡単な仕事ではない シンタックスハイライターで起こりがちなミス “catch me if you can” ; 文字列中のキーワードをハイライトしてしまう (quote (if)) ; クオートの中のキーワードをハイライトしてしまう (let [name #(subs (name %) 1)] (name ’foo)) ; トップレベル変数とローカル変数のハイライトが一貫 ; していない
遅い遅いと言われる Clojure の起動ですが,JVM のオプションを正しく設定すれば少しは速くなります. 以前,TieredCompilation オプションで起動をちょっとだけ高速化. というメモを書いたのですが,このメモで紹介したオプションを,-XX:TieredStopAtLevel=1 と組み合わせることで,Clojure の起動をオプション無しのときと比較して,30% 高速化できました. まずはベースラインから, ~ % /usr/bin/time java -client -cp ~/clojure.jar clojure.main -e nil 1.10 real 1.60 user 0.11 sys 私の環境では 1.1 秒かかっています.次に,-XX:TieredCompilation を追加します. ~ % /usr/bin/time java -XX:+Tiere
Slideshareに投稿したのですが、LTでやったので詳細が伝わらないと思ったので解説します。 http://www.slideshare.net/kawasima/ss-33220875 Excel方眼紙の話題は尽きることはありませんが、どうも殺意ばかりが前面にでて、Excel方眼紙と上手く付き合う方法がみられなかったので、作ってみた次第です。 Excel方眼紙をPDF等のただの帳票として考えると、これはなかなか面白いものですし、iTextを使ってPDFを作るより、Excel方眼紙を作ってからPDF化した方が簡単に帳票出力コードかける気がしています。帳票レイアウトもExcel方眼紙であればユーザに直接作ってもらったものが使えますし、ね axbomber-cljとは axebomber-cljは、HTML-likeなコードでExcel方眼紙をアウトプットするためのツールです。 構文はhi
「HackerNews翻訳してみた」が POSTD (ポスト・ディー) としてリニューアルしました!この記事はここでも公開されています。 今回の記事は、Clojureでのハッシュテーブルの実装に関する記事です。長い記事で途中までの翻訳になりますがお楽しみください。 Original article: Data Structures in Clojure: Hash Tables by Max Countryman 前回のおさらい 前回の記事では連結リストについてお話ししました。具体的には、ミュータブルな片方向リストの実装方法を検証しましたね。片方向リストを選んだ理由についても、すでに説明済みです。ここで覚えておいてほしいのは、一般的にClojureではイミュータブルなデータ構造が用いられるということです。しかしミュータブルなデータ構造を利用した方が、アルゴリズムがよりシンプルで高速になるケ
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
4. STMとは Software Transactional Memory ソフトウェアトランザクショナルメモリは、データベーストラン ザクションに似た並行性制御機構であり、並列計算を行う際の 共有メモリへのアクセス法である。 この機構はロックベースの同期を用いた並行性制御の代替手段と して機能し、ノンブロッキングな方法で実装される物もある。 Wikipediaより 楽観的: 他のスレッドを気にせずとりあえず実行してみる 変なことになったらリトライする 最近盛んに研究されている(らしい) 5. ロックの利点と欠点 利点 いつロックを取得し、解除するかを陽に制御できる 開発者にとって馴染みがある方法 多くのプログラミング言語でサポートされている 欠点 ロックのとる順序によってデッドロックが起こる 優先度逆転が起こる composableでない
cljsbuildのcrossoversという機能を知らない所為で今まで無駄に苦労してきましたが、これでマクロが使えないという制約から解き放たれました。 万歳!cljsbuild! マクロが使えるようになってまず一番最初にやることは何か? もちろん、モナド内包表記の実現ですね! HaskellのdoよりはScalaのforの方が慣れているのでこちらを採用しました。 動的型付けの言語でのモナドの実現はいくつか見てきましたが、明示的にコンテキストを指定するタイプはあまり好かないので、ClojureらしくProtocolで表現することにしました。 Monadic Protocol 通常モナドはunitとbindが実装され、モナド則 bind f (unit x) == f x bind unit m == m あともう一個なんかあった気がする を満たしますが、動的型付けの言語でunitを実現する
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く