ちょっとしたCLI(ある程度出来たら記事にします)をOCamlで作っています。その際、初めてppx_letを使ってみたんですが、なかなか良かったので紹介します。 ppx_letは、OCaml界隈では知らない人のいないJane Street社が公開しているPPX拡張です。 OCamlでmonadを扱う時の課題 大抵、resultとかoption(特にresult)をmonadicにつなげていく時、大抵は下のような書き方になります。 let bind v ~f = match v with | Ok v -> f v | Error _ as v -> v let (>>=) v f = bind v ~f let foo = function | v when v > 10 -> Ok v | _ -> Error "error" let bar v = Ok (v * 10) let ()
大分長い間use-packageを利用していましたが、一日掛けてleaf.elに移行してみました。leaf.elの利点や移行時の注意などをまとめたいと思います。 use-packageに感じていた問題点 ・・・というのは実はあまりないんですが、あえて言えば次のような点でした。 設定のgroupingがしづらい use-packageはネストすることを前提としていない?ので、packageの設定が分散しがち bindの設定方法が独特 aggressive-indentを使っていると、中々にindentが荒ぶります 標準パッケージをきちんと利用する方法がよくわからない あまり頻繁に.emacs.dを更新していない、というのもあるんですが、端的に言うと まーいいか という状態でした。 leaf.el leaf.elは、 leaf.el is yet another use-package. とし
気づいたら来週で今年の業務も終わりということに気づきました。今年もいろいろ・・・あったか? 今回は、最近色々と辛くなってきたので、初めてProtocol Buffers・・・というかProtocol Buffers languageを利用して、サーバー側=OCamlとクライアント側=TypeScriptで型定義を共有していきたいと思います。 Protocol Buffersとは もう公式を見ていただくのが早いと思いますが、一応自分の言葉で説明します。既に知ってるわ!という方はすっ飛ばしてください。 Protocol Buffersとは、ザックリ言うとデータ構造を効率的にシリアライズするための仕様です。gRPCで利用されるデフォルトのシリアライズフォーマットであること、Googleが長年利用していることで有名です。単にProtocol Buffersとだけ言うとあくまでシリアライズの仕様だけ
条件分岐の多い処理を、F# の Option 型とコンピューテーション式の文法を活用してコードの可読性を向上させる例を示します。 「関数プログラミング実践入門 ──簡潔で、正しいコードを書くために」《第5章 モナド / 5.4 他の言語におけるモナド》に載っている Java や Haskell のコード片を参考に、 F# のコードで同様の動作をするように独自に解釈して実装を試みています*1 F#で実装したコード open System type Ticket = FilmTicket type Money = int type Wallet = { mutable Amount: Money } with member this.getMoney (cost: Money) = if this.Amount >= cost then this.Amount <- this.Amount -
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く