Partial function
Jul. 22nd, 2008 03:13 pmЯ вот жаловался
thesz, что в Haskell нет аналога partial function в Scala, чтобы можно было легко строить конструкции аналогично Erlang'овского receive (я говорю о синтаксисе). Однако механизмы есть. Правда, я нашёл пока только для IO.
Список здесь всего лишь пример, можно сделать и по другому (varargs?)
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?)
Даешь в месяц по контесту
Date: 2008-07-22 11:52 am (UTC)По существу: вы делали замеры производительности? Я сужу по "вершкам", но вижу логика строится на исключениях, насколько это дёшево?
Заодно спрошу о портеровском стеммере, давно собирался. Я видел в репозиториях вашу версию для хаскела. А что скажете про использование стемминга для русского языка? Мне он показался не очень хорошим, но я и оценивал "невооружённым" глазом.
Re: Даешь в месяц по контесту
Date: 2008-07-22 12:08 pm (UTC)Замеры производительности не делал совершенно - я даже код писал в интерпретаторе, в файлах у меня ничего нет :-( Исключения, это, конечно не явный case так что должно быть медленнее - насколько - не задумывался, решал совсем другую задачу:
У Haskell есть несколько неприятных для меня моментов в синтаксисе, отсутствие которых только подняло бы его DSL-ность :) Этот пост - попытка обойти один из этих моментов, даже проще - попытка записать мысль пока не убежала - не больше.
Портеровский стеммер - это кажется вообще моя первая программа на Хаскеле. Мне понравился язык, я захотел чего нибудь на нём написать, а тут как раз были задачи по индексации и я наткнулся на сайт Портера. Как он ляжет на русский язык не могу сказать определённо. Я совершенно некомпетентен в этом вопросе, думаю, что аналогичный можно для русского написать, только суффиксы, приставки, окончания будут другими :) Хотя может быть стем в русском смотрят совсем по другому - тут можно много рассуждать, лучше поискать/почитать.
Ко мне можно на ты ;-)
Re: Даешь в месяц по контесту
Date: 2008-07-22 01:57 pm (UTC)Ах вот что - стеммер у тебя для английского. Я тогда просто обратил внимание на автора и почему - то решил, что это реализация для русского языка. Рускоязычный я пробовал - слишком много overstemming´а.