タグ

type-theoryに関するilyaletreのブックマーク (17)

  • 型推論と型検査、静的な型つけと動的な型つけ、強い型つけと弱い型つけ - sumiiのブログ

    ついでに追加。 型推論:変数や式の型をプログラマが宣言しなくても、言語処理系が文脈から推論してくれる機構。MLとかHaskellとか。 型検査:変数や式の型が合っていることを言語処理系が(普通は静的に)チェックしてくれる機構。CとかJavaとか、MLやHaskellも。 静的な型つけ:プログラムの実行前に型を検査する機構。MLとかHaskellとかCとかJavaとか。 動的な型つけ:プログラムの実行中に型を検査する機構。LispとかSchemeとかPerlとか。 強い型つけ:検査を通れば、安全さ(safety)が保証される、という(普通は静的な)型つけ。MLとかHaskellとかJavaとか。Javaはバグがあったりしたので少し怪しいですが。 弱い型つけ:検査を通っても、安全さ(safety)は保証されない、という型つけ。CとかPascalとか。 安全さ(safety):プログラムが言語仕

    型推論と型検査、静的な型つけと動的な型つけ、強い型つけと弱い型つけ - sumiiのブログ
  • 私と型システムとポエム

    最近巷では俄に型システムについての言及が増え、型システムポエマーが増えてる気がするので自分もその時流に乗りたい。 完全にポエムだけどなんかあったら随時指摘ください。直します。 TL;DR 言いたいことはまとめると次 型システムは程度問題なのでちょうどいいところを探すべき 型は万能でも強さが正義でもない(だから未だに研究されてる) よく知りもしないくせに計算機科学を侮辱するのはやめろ 予防線 あくまでポエムですので中身はないです 私は型理論専攻で学位はとったものの研究者ではないのであまり信用しすぎないように 型システムの過去 型システムは大まかに次のような利点があるとされてきた(個人的主観) 「異常」なプログラムを検出する仕組み 静的解析による分かりやすいエラーメッセージ 型そのもののドキュメント性 IDEでのcompletionに貢献 最適化に貢献 (数学に正しく裏打ちされたsemanti

    ilyaletre
    ilyaletre 2018/06/03
    おまけのとこのJavaへの言及部分がなんかワクワクした。
  • System F with type equality coercions - Microsoft Research

  • What is a nominal type?

    The slide for the talk on: try! Swift Tokyo 2017 RejectCon - connpass https://rmp-quipper.connpass.com/event/49316/ Swiftで、Anyなどの一部の型にextensionを書こうとしたときのエラー文言「Non-nominal type 'Any' cannot be extended」 「Non-nominal type」とは何なのか? について掘っていたら、型システムの基的な分類に辿り着きましたよ、というお話です。 英語および日語の資料です。

    What is a nominal type?
    ilyaletre
    ilyaletre 2018/06/01
    nominal typeって何だろと思って見てみたら冒頭のテンションの高さに笑った。
  • 多相バリアントを使いこなそう(4) - osiire’s blog

    前回までで多相バリアントの基的な機能は説明してきました。そこで今回は、多相バリアントのとても重要な応用についてお話したいと思います。それは、場合分け構造の拡張問題です。 場合分け構造の拡張は難しい 例えば、次のようなコードがあったとします。 module Card = struct type t = Num of int | Jack | Queen | King let num = function Num i -> i | Jack -> 11 | Queen -> 12 | King -> 13 end Card.tには4種類の場合分けがあり、それらに対してnumという操作が定義されています。このような場合分け構造+操作に対して、 静的で安全に(キャストせず)、 元のコードを一切変更せず、 新しい場合分けを加え、 新しい操作も加えた 新しい場合分け構造を定義する にはどうすればいい

    多相バリアントを使いこなそう(4) - osiire’s blog
  • Racket 6.11で篩型(refinement type)と依存関数型(dependent function type)が安定機能に

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    Racket 6.11で篩型(refinement type)と依存関数型(dependent function type)が安定機能に
  • 漸進的型付けの未来を考える - -

    この記事はCAMPHOR- Advent Calendar 2017 11日目の記事です. アブストラクト 漸進的型付けは,ひとつの言語の中で静的型付けと動的型付けをスムーズに組み合わせるための技術です. よく知られた特徴は any 型を使った静的型付けで, TypeScriptPython といったプログラミング言語には既に実装されています. しかし,理論と実際のプログラミング言語の間には大きなギャップが存在します. 特に,漸進的型付けの理論で提案されているキャストを用いた動的型検査が実装されていないために, 静的型付けの恩恵を十分に得られていないという問題があります. この記事では,まず漸進的型付けの理論をコード例を用いて紹介し, 現状の漸進的型付き言語が抱える問題を解説します. そのあとで,漸進的型付き言語が目指すべき目標を理論的視点から論じます. それらの目標は,静的型付けを

    漸進的型付けの未来を考える - -
  • WTF is F-Bounded Polymorphism

    ilyaletre
    ilyaletre 2017/12/03
    F-Bounded Polymorphism について
  • Reddit - Dive into anything

    I am reading Oleg Kiselyov's tutorial on tagless final interpreters. When implementing a DSL, what is the advantage of tagless final style over plain old datatypes (or say, GADTs)? I know when using normal datatypes, when you add new variants, you need to modify existing functions that operate on these types, and then you lose separate compilation. But does that really pose a huge problem in pract

    Reddit - Dive into anything
    ilyaletre
    ilyaletre 2017/11/30
    なんかやたら流暢に語ってる人おるな、と思ったらEdward Kmettだった。(あるある
  • https://okmij.org/ftp/tagless-final/course/lecture.pdf

    ilyaletre
    ilyaletre 2017/11/30
    tagless finalの講義ノート。印刷しないと読めないわこれ。
  • tiger.dvi

    Java 2 Standard Edition 5.0 Tiger Java 3 7 2013 10 25 Copyright 2004, 2005, 2009, 2010, 2013 Yoshiki Shibata. All rights reserved. iii Tiger, Tiger burning bright Like a geek who works all night What new-fangled bit or byte Could ease the hacker’s weary plight? – Joshua Bloch Tiger Java 2 Standard Edition 5.0 Java Java 1.1 1.4 assert 5.0 Java 5.0 1.4 Java 5.0 Java 1.4 1.4 5.0 5.0 5.0 Java type par

    ilyaletre
    ilyaletre 2017/08/29
    Javaのジェネリックについて知りたいならこれ、らしい。
  • The DOT Calculus - (Dependent Object Types)

    The DOT Calculus (Dependent Object Types) Nada Amin Scala Days June 18, 2014 1 DOT: Dependent Object Types I DOT is a core calculus for path-dependent types. I Goals I simplify Scala’s type system by desugaring to DOT I simplify Scala’s type inference by relying on DOT I prove that DOT is type-safe 2 Types in Scala and DOT 3 Types in Scala modular named type scala.collection.BitSet compound type C

    ilyaletre
    ilyaletre 2016/12/11
    DOT計算ってなんだーって思ってみつけた資料。
  • Tagless-Final Style

    The so-called ``tagless-final'' style is a method of embedding domain-specific languages (DSLs) in a typed functional host language such as Haskell, OCaml, Scala or Coq. It is an alternative to the more familiar embedding as a (generalized) algebraic data type. It is centered around interpreters: Evaluator, compiler, partial evaluator, pretty-printer, analyzer, multi-pass optimizer are all interpr

    ilyaletre
    ilyaletre 2016/12/02
    また謎のキーワードを発見してしまった。。。
  • 静的型チェックがあったらテストはあまり書かなくて良いのか - $shibayu36->blog;

    昔に動的言語だとひたすらテストを書かないといけないけど、静的型チェックの仕組みがあればそんなにテストを書かなくてもいいよねみたいな話があった記憶がある。昔は結局どうなんだろうと思ってたのだけど、最近もそういう話を耳にして、やっぱりそんなことないだろうという気持ちになったのでメモ。ふと思いついただけなので正当性は分からない。 まずなぜそのような話になるのか考えたのだけど、「静的言語ならコンパイル時に型チェックをすることができるため安全性を高められる」という点からこういう話が上がってきているように思う。しかしよく考えてみると、静的型チェックという仕組みは、プログラムテキストとして正当であるかという点しか保証していない。つまり、特定の変数が必ずその型であるとか、特定のエンティティからのメソッド呼び出しが正しいか(メソッド名や引数など)とか、関数が返す型がかならず指定した型になるかとか、そのような

    静的型チェックがあったらテストはあまり書かなくて良いのか - $shibayu36->blog;
    ilyaletre
    ilyaletre 2016/10/20
    "「決められた仕様どおりに実装できているか」という点を確認することは出来ない。" 型で仕様を表現できるなら、型を充足する実装にはテストがいらないだろう。実際には型で仕様を表現するのが難しいわけだけど。
  • Write You a Haskell ( Stephen Diehl )

    There is nothing more practical than a good theory. — James C. Maxwell Hindley-Milner Inference The Hindley-Milner type system ( also referred to as Damas-Hindley-Milner or HM ) is a family of type systems that admit the serendipitous property of having a tractable algorithm for determining types from untyped syntax. This is achieved by a process known as unification, whereby the types for a well-

  • Instances and Dictionaries - School of Haskell | School of Haskell

    An Idealized Operational View of Type Class Dictionary PassingWhen you make a class class Foo a where quux :: a -> Int muux :: a -> Booland then an instance. data Bar = Bar instance Foo Bar where quux = \Bar -> 1 muux = \Bar -> TrueThere is a desugaring processes that occurs, removing type classes. For each class there is an associated record, data FooD a = FooD -- class Foo a where { quuxD :: a -

    ilyaletre
    ilyaletre 2016/09/30
    Elmには型クラスが無くて……と言われたりするけど、コンパイラに辞書を決定させるプロセスさえ諦めれば、自分で辞書作って渡すようなエミュレートはできる。つまり忍耐と根性が必要だ。
  • HaskellとOCamlの型の違い

    Hideyuki Tanaka @tanakh 完全な型推論よりも、型システムの表現力が重要である、という考えは多分OCamlとは相容れない。そこがOCamlとHaskellの決定的な差であって、PureとかLazyとかの違いはそれに比べれば割りとどうでもいい。 2012-03-26 14:24:35 Jun Furuse 🐫🌴 @camloeba RT @tanakh 完全な型推論よりも、型システムの表現力が重要である、という考えは多分OCamlとは相容れない。そこがOCamlとHaskellの決定的な差であって、PureとかLazyとかの違いはそれに比べれば割りとどうでもいい。 2012-03-26 14:36:35

    HaskellとOCamlの型の違い
  • 1