- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
sel :: Int -> Int -> Expr
sel i n = lam [pvar "x"] (caseE (var "x") [alt])
where alt :: Match
alt = simpleM pat rhs
pat :: Patt
pat = ptup (map pvar as)
rhs :: Expr
rhs = var (as !! (i-1)) -- !! is 0 based
as :: [String]
as = ["a"++show i | i <- [1..n] ]
[quote]The code for sel is more verbose than that for printf because it
uses explicit constructors for expressions rather than implicit ones.[/quote]
Сообственно это все объяснение к данному коду:
http://research.microsoft.com/en-us/um/people/simonpj/papers/meta-haskell/meta-haskell.pdf
, так как и это все очень очевидно для автора, в то время как printf был и без объяснений очевиден даже мне. Автор хоть бы одно значение сокращения потрудился объяснить. Впрочем сокращениями стандартная библиотека хаскеля любит страдать...
guest 24.09.2013 11:45 # −2
> haskell
Казалось бы причем тут хаскель? Поделил на ноль.
roman-kashitsyn 24.09.2013 12:05 # +4
crastinus 26.09.2013 15:23 # +1
roman-kashitsyn 26.09.2013 15:45 # +3
tirinox 26.09.2013 16:55 # +3