Я тут как-то на досуге перевёл статью Мартина Эрвига "Побег от Зурга". В этой статье показывается, как на Хаскелле решаются типичные прологовские задачи поиска с возвратом, и рассказывается, что Хаскелл гораздо проще для студентов, чем Пролог...
Побег от Зурга
Упражнение в логическом программировании
Мартин ЭРВИГSchool of EECS, Oregon State
(
Read more... )
Comments 20
Reply
Reply
И только я вас очень прошу, не надо ссылаться на безграмотный наколенный перевод неплохой, вообще говоря, книжки Джеймса Коплиена. Герой-переводчик стране не известен, ибо отказался, видимо, от указания авторства. И правильно сделал -- такой перевод способен репутацию уничтожить навсегда. А между тем, именно после появления чудовищной словоформы "мультипарадигменный" в заглавии этой книжки она стала встречаться и в других местах.
Reply
Но "мультипарадигменный" хотя бы в википедии употребляется, в отличии от...
"мультипарадигмальный" -- слух режет невообразимо...
Хорошо, пусть рассудит гугл:
"мультипарадигмальный" -- 103 ссылок
"мультипарадигменный" -- 1100 ссылок
Хотя что нам гугл? Яндекс-словари:
"парадигмальный" -- 155 ссылок
"парадигменный" -- 0 ссылок
Ох уж эта парадигма, грамматический пример, система форм одного слова... Какие же у неё самой словоформы?
ЗЫ. Вы знаете, языки имеют тенденцию к изменению со временем... ;о)
Reply
Вапще-то это некорректная постановка вопроса -- "м" является частью корня "парадигм", а слов с окончанием "-енный" найти можно много... Ну например, "качественный"...
Reply
форменный
Reply
Reply
Вот первое решение:
main = do
let move1 = solution !! 0
putStrLn ("First solution=" ++ show move1)
getLine
Reply
main = do
putStrLn ("Solutions=" ++ show solution)
getLine
Reply
main = sequence_ $ map (putStrLn . unlines . map show) $ map fst solution
на печать выводится все (два) решения:
Right [Buzz,Woody]
Left Buzz
Right [Hamm,Rex]
Left Woody
Right [Buzz,Woody]
Right [Buzz,Woody]
Left Woody
Right [Hamm,Rex]
Left Buzz
Right [Buzz,Woody]
Reply
Reply
main = putStrLn $ unlines $ map (unlines . map show . fst) solution
Очень просто -- берём список результатов solution, каждый элемент которого является списком ходов вправо/влево + конечный положение игрушек, которое нас не интересует (ведь мы итак его знаем, так что берём только ходы по fst), и обрабатываем (map) так, что все ходы преобразуются в текстовый вид (map show). Получившийся список строк сцепляем в одну строку с переносами (unlines), и имеем снова список строк, который также сцепляем по unlines. Полученную строку печатаем (putStrLn)
Reply
Leave a comment