Partial function
Jul. 22nd, 2008 03:13 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Я вот жаловался
thesz, что в Haskell нет аналога partial function в Scala, чтобы можно было легко строить конструкции аналогично Erlang'овского receive (я говорю о синтаксисе). Однако механизмы есть. Правда, я нашёл пока только для IO.
Список здесь всего лишь пример, можно сделать и по другому (varargs?)
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
import Prelude hiding (catch) import Control.Exception e `patternFail` h = e `catch` \(PatternMatchFail _) -> h apply handlers = \x -> foldl1 patternFail (map ($x) handlers) -- *Main> apply [\[1]->putStrLn "a", \[2]->putStrLn "b", \[3]->putStrLn "c"] [2] -- b
Список здесь всего лишь пример, можно сделать и по другому (varargs?)