Цитата для памяти
Jan. 4th, 2013 12:11 amКак лучше делать сопоставление с образцом в языке с зависимыми типами?
------------------------------------------------------------------------------ ( n : Nat ! data (---------! where (------------! ; !--------------! ! Nat : * ) ! zero : Nat ) ! succ n : Nat ) ------------------------------------------------------------------------------ inspect succ (zero) => succ zero : Nat ------------------------------------------------------------------------------ ( x, y : Nat ! let !----------------! ! plus x y : Nat ) plus x y <= case x { plus zero y => y plus (succ x) y => succ (plus x y) } ------------------------------------------------------------------------------ inspect plus (succ (succ zero)) (succ (succ zero)) => ? : Nat ------------------------------------------------------------------------------
Такую красоту (Epigram: Practical Programming with Dependent Types) нельзя не изучить!
Пойду, куплю картриджи для цветного принтера :-)
UPD: Why Dependent Types Matter - ещё ссылочка про него.