タグ

Haskellとphantom-typeに関するnsyeeのブックマーク (4)

  • 型安全なリストを作るのです(`・ω・´) ~ その2、GADTsと依存型>ω<

    前回のあらすじですー>ω< Phantom Typeを駆使して空リストに適用しようとすると、コンパイル時にエラーを吐く型安全なリストを定義したのです(`・ω・´) しかし、tailはよく分からないエラーに阻まれて定義することができなかったのです……><; 今回は型安全なtailはどうやったら実現可能か考えてみたいと思いますです>ω< 前回のエラーをもう一度確認してみますです。 前回のソースコードとエラーを再掲しておきますです(`・ω・´) SafeList_by_PhantomType.hs{-# LANGUAGE ExistentialQuantification #-} module Main where import Prelude hiding (head, tail) data Empty data NonEmpty data SafeList x a = forall y. C

  • 型安全なリストを作るのです(`・ω・´) ~ その1、Phantom Type(幽霊型)入門ですー>ω<

    2月 20 2014 型安全なリストを作るのです(`・ω・´) ~ その1、Phantom Type(幽霊型)入門ですー>ω< Phantom Typeってなんです(・ω・? Phantom Type…、幽霊型… みなさん、ご存知でしょうか(・ω・? わたしは昔に何度かTwitterで見かけたので、名前だけは知っていました(`・ω・´) かっこいい名前だな―って感じです>ω< ファントム・タイプ!!! で、ちょっと面白そうな香りがしたので調べてみましたのです>ω< Phantom Typeさん、名前は仰々しいですが、その実態は非常に単純なものでした>ω< Phantom Typeとはつまり、こういうことです>ω< え(・ω・? どういこと(・ω・? これだけでは分かりにくいかもしれませんです(´・ω・`) ですがよく見てください。PhantomType型は二つの型変数を取りますが、右辺のデ

  • 型安全なリストに対する補足とGADTsの話ですー>ω<

    お久しぶりですー>ω< 気がついたら一ヶ月も経っていてしまいました(´・ω・`) 前回の記事で実際に動かすことの出来ないtailを公開してしまったので、この記事はその謝罪と説明と補足になります(`・ω・´) 前回の記事で問題だったところ(・ω・? 問題だったのは、具体的にはここですm9(・∀・)ビシッ!! このtailは残念なことに型エラーが出て動かないのです(´・ω・`) なぜなのでしょうか?? 出てきたエラーメッセージを見てみます>< SafeList_by_PhantomType.hs: Couldn't match type `y' with `x' `y' is a rigid type variable bound by a pattern with constructor Cons :: forall x a y. a -> SafeList y a -> SafeList

  • Phantom Type(幽霊型)入門ですー>ω<

    あいさつ>ω< みなさん、お久しぶりです、月影です>ω< 「いつかブログを書こう」と思っていたら、なんと一週間もたってしまいました(゚д゚)! 「いつか」なんて考えていちゃいけませんね、「今でしょ!」の精神でいかなくちゃです>ω< というわけで、今回はPhantom Typeについてのお話です>ω< Phantom Typeってなんです(・ω・? Phantom Type…、幽霊型… みなさん、ご存知でしょうか(・ω・? わたしは昔に何度かTwitterで見かけたので、名前だけは知っていました(`・ω・´) かっこいい名前だな―って感じです>ω< ファントム・タイプ!!! で、ちょっと面白そうな香りがしたので調べてみましたのです>ω< Phantom Typeさん、名前は仰々しいですが、その実態は非常に単純なものでした>ω< Phantom Typeとはつまり、こういうことです>ω< え(

  • 1