You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
型レベルFizzBuzzどっかで見た気がするが、今書けるかというと絶対無理 — xenophobia (@xenophobia__) 2014, 5月 2 ↑みたいなこと呟いたら「そんな難しいか?」という意見が見受けられ、言われてみれば確かにそんな言うほど難しくないのでは、と思い書いてみました。最近Haskell書いていない気がするし。*1 なんですが、そもそも"型レベルFizzBuzz"って何でしょうか。初めに想像したのは (N1, N2, ...は型レベル自然数として) *Main> :t Proxy :: Proxy (XFizzBuzz N1) Proxy :: Proxy (XFizzBuzz N1) :: Proxy ('Number ('S Zero)) *Main> :t Proxy :: Proxy (XFizzBuzz N3) Proxy :: Proxy (XFizz
■ [Haskell] Type Familiesを使って型レベルで階乗を実装してみる Type Familiesを使って型レベルで階乗を実装してみます。基本の考え方としては、dataで定義する型が型レベルの値で、type familyで定義する型属が型レベルの関数になります。 まずは、数の定義から。EmptyDataDecls拡張を使います。 {-# LANGUAGE TypeFamilies, EmptyDataDecls, UndecidableInstances, ScopedTypeVariables #-} data Zero data Succ a 後で楽なようにいくつかの数も定義しておきます。 type One = Succ Zero type Two = Succ One type Three = Succ Two type Four = Succ Three type
Haskell 型レベルプログラミングの DSLへの応用 id : keigoi (OCaml-Nagoya) HAMA.jp 2009 1 発表の構成 1. ドメイン特化言語と Haskell 2. 型クラスとFunDeps基礎 3. FunDepsによる型レベルプログラミング 4. ドメイン特化言語「セッション型」による ネットワークプログラミング 2 ドメイン特化言語 (Domain Specific Language) • 各領域で、そこに特化した言語(DSL)がデザイ ンされてきた。 • データベースアクセス ... SQL • ハードウェアデザイン ... Verilog • システム制御 ... 微分方程式とブロック線図 3 DSLはわかりやすい • DSLでプログラムを書けば、 • もっとも短く • もっとも簡潔に • もっともわかりやすく ソフトウェアを構成できる (少な
_ ふつうでない Haskell の学び方:なぜ「遅延する」関数型言語は重要か John Hughes の書いた "Why Functional Programming Matters" という、とても魅力的な文章があります(邦訳は nobsun がしてくださいました 『なぜ関数プログラミングは重要か』)。 この文書のなかで、 John は「遅延評価」がプログラムのモジュール化に貢献することを述べています。また、アルゴリズムを遅延的に書くことで実行効率があがることもあるということを指摘しています。 ところで、一方でこういう有名なプログラミングに関するジョーク(にしては、とても気合が入っている)をご存知の方もいることでしょう : "The Evolution of a Haskell Programmer", Fritz Ruehr, Willamette University,2001-0
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く