OCamlに関するmitsuyoshi4のブックマーク (2)

  • OCamlのメモリモデルについて

    序文 これまでRuss Coxが書いたメモリモデルに関する記事について、 Twitterでまとめてきた。 Updating the Go Memory Modelの要約 Goのメモリモデルは上記記事にあるように「データ競合のあるプログラムは、実装が競合を報告してプログラムを終了する可能性があり」その意味で無効なプログラムとして処理され、それ以外の場合(例えば部分的にデータ競合のあるプログラム等)はその場合の挙動を予め定義している。 さて、OCaml 5.0.0 は2022/12/16にリリースされたが、この時初めてマルチプロセッサに対応した。 つまり並列処理に対応した(以前は並行処理しかできなかった)。 そこで改めてOCamlのメモリモデルについてしっかりと理解してみる。 OCamlのメモリモデル概要 モダンなプロセッサとコンパイラは積極的にプログラムを最適化するが、並列処理を含むプログラ

    OCamlのメモリモデルについて
    mitsuyoshi4
    mitsuyoshi4 2023/01/16
    書いた
  • OCaml で Abstract モジュール型を実現する方法

    概要 オブジェクト指向でいうところの、抽象基底クラスを実現する方法。 なお、OCaml では オブジェクトも扱えるが、ここでは ABC モジュールの実現を考えてみる。 このdiscuss を見て、なるほどとなったのでまとめてみたというのが背景。 抽象基底クラスの理解については、Python の この章 を参考にした。 ABCモジュール型の定義 ABCモジュールを以下のように定義する。 ここでは、ABCの頭文字を取って、Aモジュール型とした。 ※いやー、OCamlにはモジュール型(sig..end)とモジュール(struct...end)があって混乱しますね… というわけで、これらについてはOCamlのモジュール (ストラクチャ) とモジュール型 (シグネチャ) を参考にしてください。 module type A = sig type t type err type 'a do_things

    OCaml で Abstract モジュール型を実現する方法
    mitsuyoshi4
    mitsuyoshi4 2021/10/14
    かいた
  • 1