はじめに この記事はDenis Shevchenko氏の講演、The Way to Simplicity: How Haskell Simplifies Code Maintenance.を参考に書かせていただきました。 概要 この記事ではHaskellのデザインパターンの1つである幽霊型(Phantom Type)について取り上げたいと思います。 完成したコードはGitHubにもアップロードしているのでそちらも参照してみて下さい。 https://github.com/HirotoShioi/PhantomType 今回はメッセージの暗号及び復号を行うライブラリの開発を行い、開発する上で発生した問題を幽霊型を用いることで如何に解決できるかを紹介します。 初期実装 まずはMessage型を定義しましょう 次にメッセージを暗号化し、それを復号する関数encrypt,decryptを実装しまし
はじめに 『Servoにおける単位系の静的チェック』という記事を読んでから、これを実現する方法がずっと気になっていたのだが、現状、 std::marker::PhantomData についての日本語文献が見当たらないので、メモ書きとして本稿を描いた次第である。 なお、使用したコンパイラのバージョンは rustc 1.10.0 (cfcb716cf 2016-07-03) 。 Phantom Type (幽霊型) について 幽霊型とは、型検査を利用したデザインパターンの一つ。インスタンスの状態を数値や文字列といった実際の値として持つのではなく、型パラメータとして持つことで状態の検査を実行時ではなくコンパイル時に行う。実行時にはこのパラメータが存在しないことから幽霊型と呼ばれる。(2016年9月2日訂正)改めて調べてみたところ、見た目上は現れない制約を付与するところがあたかも幽霊のようであるこ
Programování jako zábavná hra! Děti, ale i dospělí se mohou naučit kódovat velice přístupnou formou, která bude všechny bavit! Foto: Pixabay Základy programování Programování se může zdát jako složitá věda, ale s dnešními dostupnými nástroji se tomuto řemeslu může naučit každý. Samozřejmě záleží, jaké k tomu má kdo dispozice a kolik času je ochoten učení věnovat. Už ale dávno neplatí, že je progra
お久しぶりですー>ω< 気がついたら一ヶ月も経っていてしまいました(´・ω・`) 前回の記事で実際に動かすことの出来ない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…、幽霊型… みなさん、ご存知でしょうか(・ω・? わたしは昔に何度かTwitterで見かけたので、名前だけは知っていました(`・ω・´) かっこいい名前だな―って感じです>ω< ファントム・タイプ!!! で、ちょっと面白そうな香りがしたので調べてみましたのです>ω< Phantom Typeさん、名前は仰々しいですが、その実態は非常に単純なものでした>ω< Phantom Typeとはつまり、こういうことです>ω< え(
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く