タグ

typesに関するslay-tのブックマーク (2)

  • Rustで型の多相再帰はできない - 簡潔なQ

    OCamlやHaskellに比べると、Rustは多相再帰ができない場合がほとんどである。以下にその詳細を説明する。 多相再帰 異なる型引数による再帰呼び出しを多相再帰 (polymorphic recursion) という。多相再帰はPurely Functinoal Data Structuresで紹介されているようなデータ構造でよく出てくる。例えば、完全二分木はOCamlとHaskellではそれぞれ以下のように書ける。 type 'a sep = Nil | Cons of ('a * 'a) sep data Sep a = Nil | Cons (Sep (a, a)) これがlistの定義と異なることがわかるだろうか。listでは 'a list の定義に 'a list という形の型のみを用いる。ここでは 'a sep の定義に ('a * 'a) sep を用いている。これが

    Rustで型の多相再帰はできない - 簡潔なQ
  • 型システムの理論からみるSwiftの存在型(Existential Type) - Qiita

    先日「ジェネリクス勉強会」なるものが開催されていたようで地方エンジニア勢の自分にとってには羨ましい限りだったのですが、ニコニコ動画で一部の発表をみたりTwitterのハッシュタグを眺めていると「存在型」が紹介されていたみたいで、自分のTwitterの観測範囲のSwiftエンジニアの間でもちょっと盛り上がっているように見えました。 この記事では、型システム入門 −プログラミング言語と型の理論− (以下、TaPL)を片手に存在型の理論をSwiftでのコードに結びつけて説明してみようと思います! TaPLではSystem Fに存在型を加えたものが説明されていますが、この記事ではSwiftでの雰囲気を掴んでもらえるようにするため、一部Swiftっぽい型の表記を使って説明します。 また自分自身も「TaPLを頑張って読んでみようとしている」くらいのレベル感なので、もし間違いや適切でない記述があったらコ

    型システムの理論からみるSwiftの存在型(Existential Type) - Qiita
  • 1