lomeo: (лямбда)
[personal profile] lomeo
Я вот жаловался [livejournal.com profile] thesz, что в Haskell нет аналога partial function в Scala, чтобы можно было легко строить конструкции аналогично Erlang'овского receive (я говорю о синтаксисе). Однако механизмы есть. Правда, я нашёл пока только для IO.

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?)
From: [identity profile] dimiii.livejournal.com
>>Портеровский стеммер - это кажется вообще моя первая программа на Хаскеле.
Ах вот что - стеммер у тебя для английского. Я тогда просто обратил внимание на автора и почему - то решил, что это реализация для русского языка. Рускоязычный я пробовал - слишком много overstemming´а.

Profile

lomeo: (Default)
Dmitry Antonyuk

September 2025

S M T W T F S
 123456
78910111213
14 151617181920
21222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 28th, 2026 02:37 am
Powered by Dreamwidth Studios