タグ

ブックマーク / akabe.github.io (5)

  • Sized Linear Algebra Package (SLAP)

    What’s SLAP? SLAP is a linear algebra library in OCaml with type-based static size checking for matrix operations. Many programming languages for numerical analysis (e.g., MatLab, GNU Octave, SciLab, etc.) and linear algebra libraries (e.g., BLAS, LAPACK, NumPy, etc.) do not statically (i.e., at compile time) guarantee consistency of dimensions of vectors and matrices. Dimensional inconsistency, e

    notae
    notae 2016/10/28
  • 幽霊型で「ファイルから読み込んだリストの長さ」をコンパイル時に取り扱う

  • 「幽霊型」の意味がややこしい

    「幽霊型」の意味がややこしい 前回の記事で幽霊型について紹介しましたが、 もしかしたら、「幽霊型って用語の使い方、変じゃない?」と思った人もいるかもしれません (Haskeller とか)。 実は、「幽霊型」という専門用語が、具体的に何を指しているのか、専門家の間でも定義が統一されていません。 これは、私が卒論を書く時、かなり悩んだところでもあります。 調べたところ、幾つかの派閥に分かれていて、結構ややこしい事になっていました。 検索しても、有用なサーベイが見つからなかったので、メモも兼ねて、ここに書いておきます。 6/9 の記事で定義した型を思い出してみます。 type 'a channel = IC of in_channel | OC of out_channel type input type output 'a channel の 'a のように「型定義の右辺に現れない型変数」を

  • 【幽霊型トリック集】キェェ!幽霊型でバグを呪い殺すのじゃ!【呪術プログラミング】

    【幽霊型トリック集】キェェ!幽霊型でバグを呪い殺すのじゃ!【呪術プログラミング】 この投稿は ML Advent Calendar 2015 の 16 日目の記事です。早速ですが、タイトルの「呪術プログラミング」という用語は単なる釣りです。 こんな専門用語は存在しません。 あと、Advent Calendar に「この記事を読むと呪われる」とか書きましたが、 SNSで拡散すると解呪できます ウソです。呪われないので安心してください。 「幽霊型」というキーワードでググると、幾つかの記事や発表のスライドがヒットしますが、 幽霊型 (phantom type) の有用なテクニックについて広く浅く紹介した記事がないように思えたので、 私が書くことにしました。 この記事では、私が今までに書いた幽霊型に関する記事と、その概要をまとめています。 基的に、サンプル・コードは OCaml ですが、 大部分

  • 「幽霊型」の意味がややこしい

    「幽霊型」の意味がややこしい 前回の記事 で幽霊型について紹介しましたが、 もしかしたら、「幽霊型って用語の使い方、変じゃない?」と思った人もいるかもしれません (Haskeller とか)。 実は、「幽霊型」という専門用語が、具体的に何を指しているのか、専門家の間でも定義が統一されていません。 これは、私が卒論を書く時、かなり悩んだところでもあります。 調べたところ、幾つかの派閥に分かれていて、結構ややこしい事になっていました。 検索しても、有用なサーベイが見つからなかったので、メモも兼ねて、ここに書いておきます。 6/9 の記事 で定義した型を思い出してみます。 'a channel の 'a のように「型定義の右辺に現れない型変数」を「幽霊型変数」と呼ぶことは、 間違いないです。しかし、「幽霊型」が何を指すのかについては、以下のような派閥があります。 「幽霊型変数に代入される型」を「

  • 1