Когда я вопрос задавал (а это было в июне), я только начинал пробовать осилить Haskell. Типы нормально не использовал, потому что в качестве первого нехелловорлда я выбрал переписывание кода, написанного ранее на коленке на Python, а там алгебраических типов и вообще статической типизации нет. Так что и переписал я почти так же, как писал на Python, только без циклов.
Сейчас я так уже не пишу :)
Это совершенно разные языки, похожи они могут быть только в плане синтаксиса, но ни как не в плане семантики. В плане семантики они скорее полностью противоположны друг другу.
Oleg Shevelev: я про то что "всё кроме производительности - чепуха". Почему тогда не все на С кодят? Зачем все эти Haskell и Scala с их типобезопасностью; лиспы с их развитыми средствами метапрограммирования; зачем всё это ООП, вообще любые абстракции, если всё кроме производительности - чепуха?
Я не так хорошо знаком с Ruby, чтобы судить, но всё-таки не верю, что подходы в этих двух языках так сильно отличаются. Вот если взять какой-нибудь Haskell и Java, тогда пример с самураем и солдатом кажется более жизненным.
Praytic: согласен, если есть опыт программирования на других языках, материал кажется очень растянутым. Но для совсем начала, по-моему, очень даже неплохо. А дальше уже основным способом обучения станут книги, документация и Google + StackOverflow
Про 21:9 мониторы - выглядит круто, конечно, но имхо, использовать их можно разве что с тайлинговыми WM
Потому что с моими двумя мониторами я просто разворачиваю терминал на полный экран на одном мониторе, браузер - на другом. А там развернуть на полный экран не получится, значит, придётся или самому менять размер окон (для меня неприемлимый вариант), или пользоваться тайлинговым WM, где это решается парой хоткеев. Но я не знаю, как ведут себя тайлинговые WM, когда пытаешься развернуть приложение на полный экран (я иногда на одном мониторе фильм смотрю, на другом прогаю что-то для себя или вконтакте сижу). В общем, плюс двух мониторов как раз в том, что они физически разделены, и можно смело разворачивать на полный экран приложение, не заботясь о том, чтобы оставить полэкрана для другого - для этого есть второй экран.
+ за Unix as IDE, если нет неприязни к косольным редакторам, то можно открыть Tmux с несколькими панелями - в одной редактор (Vim/Emacs/Nano), в другой REPL, в третьей консольный дебаггер, например. В результате получится что-то типа консольной IDE, полностью настраиваемой под себя и позволяющей заменить любой свой компонент на его альтернативу.
potan: лучше пишут на скриптовых языках не те кто знает Haskell, а те кто понимает суть и функционального программирования, и объектно-ориентированного программирования. То есть это как раз к теме вопроса - важно знать не конкретные языки, а понимать парадигмы, чтобы правильно применять функциональный и объектно-ориентированный стили там, где они лучше подходят. Haskell - лишь один из способов постигнуть принципы функционального стиля. А человек, который кроме Haskell ни на чём не писал, может в питоне начать рекурсивные вызовы один на другом городить, не зная, что есть языки без поддержки TCO. Это я к тому, что знания программиста должны быть именно обо всём, а не только о монадах.
Сейчас я так уже не пишу :)