Hatena::Grouphaskell

eagletmtの日記 このページをアンテナに追加

 | 

2009-09-30

型レベル FizzBuzz

10:18 | 型レベル FizzBuzz - eagletmtの日記 を含むブックマーク はてなブックマーク - 型レベル FizzBuzz - eagletmtの日記 型レベル FizzBuzz - eagletmtの日記 のブックマークコメント

元ネタ: http://d.hatena.ne.jp/bleis-tift/20090929/1254185496

arId

長い…

Add, Mult は直接は関係無いが,fifteen や thirty を定義するのに便利だから入れてある.


toFizzBuzz を定義してあるので,まずはそれで確認してみる.

*Main> :t toFizzBuzz (u::One)
toFizzBuzz (u::One) :: S Z
*Main> :t toFizzBuzz (u::Two)
toFizzBuzz (u::Two) :: S One
*Main> :t toFizzBuzz (u::Three)
toFizzBuzz (u::Three) :: Fizz
*Main> :t toFizzBuzz (u::Four)
toFizzBuzz (u::Four) :: S Three
*Main> :t toFizzBuzz (u::Five)
toFizzBuzz (u::Five) :: Buzz
*Main> :t toFizzBuzz (u::Six)
toFizzBuzz (u::Six) :: Fizz
...
*Main> :t toFizzBuzz (u::Fifteen)
toFizzBuzz (u::Fifteen) :: FizzBuzz

で,FizzBuzz なリストを出力してみる.

% ghc -isrc fizzbuzz.hs -e ':t fizzBuzzList fifteen'

実行結果: http://tinypaste.com/431bbd3


さらに30まで.

% ghc -isrc fizzbuzz.hs -e ':t fizzBuzzList thirty'
Top level:
    Context reduction stack overflow; size = 20
    Use -fcontext-stack=N to increase stack size to N
(snip)

こんなエラー初めて見た…

というわけで指示通りに.

% ghc -isrc fizzbuzz.hs -fcontext-stack=35 -e ':t fizzBuzzList thirty'

実行結果: http://tinypaste.com/be404


追記

@shelarcy @lazyeagle ああ、Haskellの話でしたか。UndecidableInstancesを使って弱められた制限の下では型推論が終了しなくなる(無限ループに陥る)可能性があるため、GHCではわざと再帰スタックの深さに対して制限をかけていますhttp://www.haskell.org/ghc/docs/6.10.4/html/users_guide/type-class-extensions.html#undecidable-instances link

GHC の User's Guide のとこにまさにそのことが書いてありましたね.

Termination is ensured by having a fixed-depth recursion stack. If you exceed the stack depth you get a sort of backtrace, and the opportunity to increase the stack depth with -fcontext-stack=N.

ここにはデフォルトの値が書かれていないけど,実行結果からどうやら20らしい.

TracyTracy2013/03/31 21:36Articles like this really grease the sfhats of knowledge.

sbtfihoqisbtfihoqi2013/04/04 14:267a7NAH <a href="http://tfbfnqvqihef.com/">tfbfnqvqihef</a>

fjcktgzfjcktgz2013/04/04 20:18xjbG37 , [url=http://cfemoqsiulgr.com/]cfemoqsiulgr[/url], [link=http://uzxujjpcyfzd.com/]uzxujjpcyfzd[/link], http://idmfmlyrbyga.com/

PhilipjepPhilipjep2017/04/12 04:36http://stemmeries.xyz <a href="http://stemmeries.xyz">norsk kasino</a> http://stemmeries.xyz - norsk kasino

DannyGakDannyGak2017/06/11 08:51Attention Required! | Cloudflare
<a href=http://acheterdufrance.com/>More info!</a>

TimothyhycleTimothyhycle2017/06/30 12:49301 Moved Permanently
<a href=https://www.viagrapascherfr.com/>More info!..</a>

nmbwryHusianmbwryHusia2017/09/03 23:52payday loans online direct lenders only <a href="http://cashadvances2017.com"> guaranteed payday loans</a> <a href="http://cashadvances2017.com"> online payday loans no credit check</a> <a href=http://cashadvances2017.com>payday loans direct lender</a> bad credit personal loans not payday loans

nivagcHusianivagcHusia2017/09/12 12:54fast auto and payday loans <a href="http://paydayloans2017.com"> payday loan online</a> <a href="http://paydayloans2017.com"> guaranteed payday loans</a> <a href=http://paydayloans2017.com>online payday loans</a> payday loans bad credit

トラックバック - http://haskell.g.hatena.ne.jp/eagletmt/20090930
 |