osiire’s blog

ふしぎなそふとやさん

Alloy model of lock-free stack

唐突にlock-freeをAlloyで書いてみたくなったので書いた。what is lock-free 冬のLock free祭り safe from Kumazaki Hiroki www.slideshare.net kumagiさんの資料によると、lock-free stackはリンクリストみたいなもので、先頭へのポインタをCAS(Compare and…

ScalaでDBアクセスの抽象化の件

本記事は関数プログラミングAdventCalendar2015 4日目の記事です。予定を変更してDBアクセス抽象化の話をしたいと思います。pab_techさんによる二つの記事やtayama0324さんの記事でDBアクセスに対する抽象化が取り上げられています。 【ScalaMatsuriセッショ…

以前祖父の古銭コレクションを整理した記事を書いた。これが両親に好評で、息子共々にわか古銭コレクターとの認識を得た。その関係で、母が友人の親の遺産整理で大量の古銭を譲り受けてくれたとの事で、今日実家から荷物が届いた。 とりあえず分類のためにビ…

OCamlの開発環境の作り方(2014年夏版)

OCaml 4.02.0が出ましたね。PCを新しくしたついでにemacs 24系でOCaml環境を作った時のメモを置いておきます。 $ apt-get install opam $ opam init $ opam update $ opam switch 4.02.0 $ eval `opam config env` $ opam install omake ocp-index ocp-inden…

ATSのお勉強メモ

秘密結社Metasepiに関連してATSを勉強しているのでメモ。特にマニュアルには書いてないのではないかと思われる文法が散見されてつらぽよ。分からない時はぐぐって過去に作者がメーリングリストに回答している説明を探すべし。 バージョン ATS2(ATS/Postiats)…

mbedではじめる関数型マイコンプログラミング講習会β

今日はmbedではじめる関数型マイコンプログラミング講習会β @名古屋 #0(http://partake.in/events/ab56454b-c305-4f3b-b8ce-872871ab7da9)に参加。@master_qさんに組込み技術とAjhcについて教えてもらい有意義だった。 しかし、@master_qさんの目標へ向けた…

OCamlの開発環境の作り方 2012年暮れ版

この記事はLL/MLアドベントカレンダーの記事です。一時期停滞していたOCamlの開発環境は最近進化してきています。2012年暮れ時点における知見をまとめてみましょう。なお、これらの進化はOCaml開発チームはもとより、OCamlPro, @camlspotter氏、@m2ym氏の多…

GoF in OCaml for Advent Calendar 2012 #8

OCaml Advent Calendar用の記事、第八弾目です。commandパターンいってみましょう。http://en.wikipedia.org/wiki/Command_pattern上記のリンクは英語版です。(日本語版にはサンプルコードが載ってなかったので。@mrgchrさん情報ありがとうございます!)コ…

GoF in OCaml for Advent Calendar 2012 #8

OCaml Advent Calendar用の記事、第八弾目です。commandパターンいってみましょう。http://en.wikipedia.org/wiki/Command_pattern上記のリンクは英語版です。(日本語版にはサンプルコードが載ってなかったので。@mrgchrさん情報ありがとうございます!)コ…

GoF in OCaml for Advent Calendar 2012 #7

OCaml Advent Calendar用の記事、第七弾目です。今日から振る舞いに関するパターンシリーズに突入です。最初はChain of Responsibilityパターンいってみましょう。http://ja.wikipedia.org/wiki/Chain_of_Responsibility_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%…

GoF in OCaml for Advent Calendar 2012 #6

OCaml Advent Calendar用の記事、第六弾目です。構造に関するパターンの最後、Proxyパターンやります。http://ja.wikipedia.org/wiki/Proxy_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3Proxyパターンは、インターフェイス経由で実体にアクセスすることで、間に一…

GoF in OCaml for Advent Calendar 2012 #5

OCaml Advent Calendar用の記事、第五弾目です。Flyweight パターンやります。http://ja.wikipedia.org/wiki/Flyweight_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3Flyweightパターンはどうやらインスタンスをキャッシュして使いまわす手法のようです。OCamlでキ…

GoF in OCaml for Advent Calendar 2012 #4

OCaml Advent Calendar用の記事、第四弾目です。今日はFacadeパターンいってみましょう。http://ja.wikipedia.org/wiki/Facade_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3Facadeパターンは、関連するクラス群を使用するための手続きを、窓口となる一つのクラスに…

GoF in OCaml for Advent Calendar 2012 #3

三日坊主の三日目です。これで目標は果たせるので一安心です。 OCaml Advent Calendar今日は構造パターンの一つDecoratorパターンやってみます。 http://ja.wikipedia.org/wiki/Decorator_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3Decoratorパターンは、特定の(…

GoF in OCaml for Advent Calendar 2012 #2

OCaml Advent Calendar二日目です。 Adapterパターンの次はBridgeパターンですが、これは継承と委譲を組み合わせる話なので前回のAdapterパターンと記述的には同じです。省略。という事で、今回はCompositeパターンをOCamlで記述してみます。Compositeパター…

GoF in OCaml for Advent Calendar 2012 #1

年末で忙しいのにやってしまった感があります。OCaml Advent Calendar作ってしまいました。 OCaml Advent Calendar 作ったからには三日坊主は目指して参ります。参加したい方は上のページで参加表明お願いします。編集権限お渡しします。問題のネタですが正…

祖父のコレクション

先月祖父が他界した。享年97歳。数年前まで自転車に乗り庭弄りをしていた元気なおじいちゃんだった。その祖父が集めていた切手やコインがあるとの事で整理してみた。 ダンボールに入ったコレクション。大半は記念切手や記念コイン。地方自治法施行六十周年記…

emacs+omakeなocamler向けのflymake設定

下記の設定を.emacsに入れてocaml-flymake.shを適当な場所に置くだけ。色はお好みにどうぞ。 (require 'flymake) (push '("File \"\\(.*\\)\", line \\([0-9]+\\), characters \\([0-9]+\\)--?\\([0-9]+\\):\\(.*\\)" 1 2 3 5) flymake-err-line-patterns) (…

イベントドリブンな状態遷移をFRPで記述してみる

例題の仕様は次の通り。 b1,b2というボタンがあり、これらはON,OFFがあるトグルボタン。 modeというトグルボタンがある。 modeがOFFの時、b1とb2は排他的な動きをする(ラジオボタンのような動き)。 modeがONの時、b1とb2は独立なトグルボタンとして動作する…

既存モジュールを使って幽霊型を作る

幽霊型は型で特定のお約束を強制的に守るために役に立ちます。しかし、大抵は既存のモジュールの型の意味を後から使い分けたくなるのでそのためのテクニックも追加で必要になります。例えば次のような10進モジュールDecimalがあったとします。 module Decima…

Algorithm W入門を攻略してきた

先日@pi8027さん著の「Algorithm W入門」を攻略してきました。http://partake.in/events/22da1e72-032d-49ae-847f-a56606308320@Mega80bさんに同書をお渡しするついでに読書会です。@t6sさん、@mzpさん、つきあってくれてありがとう。設定したクリア条件は三…

signalは使うときに工夫しないと使い物にならない

我ながら意味不明なタイトルだが気にしない。もう少しきちんとかくと、「FRPで言うところのsignalとかbehaviorとかは、そのままでは使いにくい。ちょっと工夫しないとすぐに困ったことになる」という事。例えば単純化して次のようなSignalモジュールがあった…

run-camlしなイカ?

このエントリーはhttp://partake.in/events/5784afd8-d43b-4cbe-9256-430d5ababa2bへの参加記事でゲソ!一年前経つのは早いじゃなイカ。run-camlを知っているでゲソ?run-camlはOCamlに標準装備されているcaml-modeの機能の一つで、emacs上でtoplevelを動か…

第一級モジュールで単体テスト可能なコードを保つ

コードを単体テスト可能なよう保つためには色々なやり方がある訳ですが、一番いいのは副作用を分離して局所に押し込めておく手法でしょう。でも、処々の事情によりそんなに綺麗に分離する事もできないので、次善の策としては副作用部分をパラメーター化して…

第2版 Scalaスケーラブルプログラミング

第2版の「Scalaスケーラブルプログラミング」をid:kmizushima氏より頂戴しました。ありがとうございます。ちょうどScala 2.9でアレコレしようと思っていたところなので、大変助かります。Scalaスケーラブルプログラミング第2版作者: Martin Odersky,Lex Spoo…

ドラッグイベントを作る例

例によってドラッグイベントを作る例。 module E = Pec open Pec.OP let (!%) = Printf.sprintf let (+>) f g = g f let mouse_down, send_down = E.make () let mouse_up, send_up = E.make () let mouse_move, send_move = E.make () let dragging md mu m…

a push style event combinator

OCaml用のPush型のイベントコンビネーターです。とりあえずGitHubにアップしたので、記念。 https://osiire@github.com/osiire/Pec.git .mliはこんな感じ。 type 'a event (** [make ()] makes a new event and sender function.*) val make : unit -> 'a ev…

レイトン教授で始める Alloy Analyzer入門

8月15日にギークバーで使った資料をアップします。 レイトン教授で始める Alloy Analyzer入門 View more presentations from osiire 資料に出てくる3つの問題のAlloyによるチートコードは次の通りです。さぁ、あなたもAlloyでレイトン教授の攻略を始めよう…

函数プログラミングの集い 2011 in Tokyo

というタイトルの集まりが9月17日にありますので、皆様お誘いあわせの上ぜひお越しください。函数プログラミングの集い 2011 in Tokyo先日のこの集まりの打ち合わせの時に@ksknac氏がちらっとおっしゃっていたのが「関数型言語じゃなくて関数プログラミング…

レイジーリスト

OCamlでもレイジーリストは便利ですねー。参考のために、某案件で使うために書いたレイジーリストの実装を書いておきます。バグがあったら某案件のプログラムもバグっていると言うことなので、痛いです。ぜひご報告をお願いします。tail-recursiveとかも一応…