タグ

2014年7月22日のブックマーク (7件)

  • Apple Clip #183 iPhoneスキャナー女子力で企画| 大塚商会

  • Clojureの並列処理関連の関数 - CLOVER🍀

    Clojureで並列・並行処理といえばSTMやエージェントが有名だと思いますが、お手軽な関数も用意されているみたいなので、調べてみました。 pmap map関数の並列版です。与えたシーケンスに対して、関数を並列に適用してくれます。 (time (println (let [sleep-and-double (fn [v] (Thread/sleep 3000) (* 2 v))] (pmap sleep-and-double (range 1 6))))) ;; => (2 4 6 8 10) "Elapsed time: 3058.024539 msecs" (shutdown-agents) 少し前にこの関数を使ったエントリを書きましたが、どうもシーケンスの数だけスレッドが起動するっぽいので、その点は注意が必要そうです。 あと、裏でエージェントを使っているようなので、shutdown-

    Clojureの並列処理関連の関数 - CLOVER🍀
  • core.asyncでメインループを手に入れる - Qiita

    core.asyncなるライブラリが約1ヶ月前にリリースされましたが、皆さん使ってみましたか? 僕は昨日、今日とClojureScriptで使ってみました。各所の記事を見ていてもなにが嬉しいのかいまいちわからなかったんですが、さきほどやっとピンときたのでシェアさせてください。 とても簡単なゲームを、イベント駆動、FRP、core.asyncのgoブロックをそれぞれ使って書いてみます。 ゲームの仕様 コード量をなるべく減らすためにギリギリまで要素を切り詰めます。昔のBASICポケコンのゲームにも見劣りする程です。(参考: ポケコン哀歌) 1次元空間をプレイヤーが歩き回ることができるローグライクゲームです。1次元空間なので、プレイヤーはx座標だけを持ちます。ローグライクなのでプレイヤーの移動はvimキー、つまりh j k lを使いますが、上下方向はないので左への移動にh(キーコード72)、右へ

    core.asyncでメインループを手に入れる - Qiita
  • Monad Comprehension in Clojure

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    Monad Comprehension in Clojure
  • Freeモナドでゲームを作ろう!第0回: 概要 - モナドとわたしとコモナド

    連載目次 第0回: 概要 (この記事) 第1回: Gameモナドの基 先ほど、free-gameというライブラリをアップロードしました。free-gameは、世界で一番柔軟かつ簡単にゲームなどのGUIを作れるライブラリを目指しています。 Freeモナドとは Freeモナドは、Functorを与えると自動的にモナドを生成してくれる構造で、これを使うことで、アクションをデータの一つとして柔軟に扱えるようになります。去年の10月ごろからにわかに日のHaskeller間で流行り始めた、今一番熱いモナドです[要出典]。Freeモナドそのものに関してはこれらの記事を読みましょう。 Haskell for all: Why free monads matter そろそろFreeモナドに関して一言いっとくか 型クラスとモナドと Free モナド - あどけない話 Freeモナドって何なのさっ!? -

    Freeモナドでゲームを作ろう!第0回: 概要 - モナドとわたしとコモナド
  • Clojureでモナド内包表記とStateモナド

    cljsbuildのcrossoversという機能を知らない所為で今まで無駄に苦労してきましたが、これでマクロが使えないという制約から解き放たれました。 万歳!cljsbuild! マクロが使えるようになってまず一番最初にやることは何か? もちろん、モナド内包表記の実現ですね! HaskellのdoよりはScalaのforの方が慣れているのでこちらを採用しました。 動的型付けの言語でのモナドの実現はいくつか見てきましたが、明示的にコンテキストを指定するタイプはあまり好かないので、ClojureらしくProtocolで表現することにしました。 Monadic Protocol 通常モナドはunitとbindが実装され、モナド則 bind f (unit x) == f x bind unit m == m あともう一個なんかあった気がする を満たしますが、動的型付けの言語でunitを実現する

  • core.matchを使って算術式インタプリタを実装する - Homoiconic Days

    (このエントリは Clojure Contrib Library Advent Calendar 8日目の記事です。) はじめに 今回のネタは,Clojureのパターンマッチライブラリであるcore.matchです。パターンマッチは,Lispのマクロの応用的な例としてなどのネタで取り上げられることが多いですが,データ構造によって処理を分岐したり,複雑なデータの中から一部を取り出す場合などに実際に使える便利な機能です。 今回はこのcore.matchを使って型システム入門の3,4章に出てくる算術式のインタプリタを実装します。 なお,core.matchを使用する場合には,Leiningenのproject.cljに以下を追加する必要があります。2013年12月現在の最新版は0.2.0-rc6です。 [org.clojure/core.match "0.2.0-rc6"] パターンマッチ c

    core.matchを使って算術式インタプリタを実装する - Homoiconic Days