- 1
- 2
- 3
- 4
- 5
- 6
- 7
data Pitch = Pitch Integer
pitch t o = Pitch (o*12 + t)
freq (Pitch p) = a4 * 2**(i/12) where
i = fromIntegral (p - 57)
a4 = 440
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+117
data Pitch = Pitch Integer
pitch t o = Pitch (o*12 + t)
freq (Pitch p) = a4 * 2**(i/12) where
i = fromIntegral (p - 57)
a4 = 440
t - нота от 0 до 12
Считает частоту.
Кстати, Pitch лучше бы newtype.
но я решительно не представляю, где они могут на практике пригодиться.
По идее, с достаточно умным компилятором отдельный newtype вообще не нужен.
во-первых жопа (⊥) может таиться в самой переменной p. (p = undefined);
во-вторых жопа может находиться внутри Pitch'а (p = Pitch undefined).
С ньютайпом же Pitch undefined это просто undefined.
Пользуясь случаем хочу спросить, куда мне дальше копать в хаскеле?
Если "Learn you a haskell" и "Real World Haskell" уже осилил, но считаю, что что-то серьезное на хаскеле писать тяжело при моих навыках.
Еще написал корявую версию words на своей корявой реализации монады State. Вообще ничего серьезного, но quickCheck'ом проверил - полное соответствие между моей и стандартной функцией.
Потом еще расширил до лексического анализатора (разделял имена, числа и операторы).
Попробую Project Euler, а вот проект какой начать потом даже не знаю... Все, что лезет в голову либо слишком сложно либо, наоборот, слишком просто.
А теперь найди работу за которую платят деньги.
Проблемы "чего бы еще написать?" сразу отпадут.
По ходу дела станёт ясно что нужно, а что нет.
Золотые слова.
Ладно, пойду устраиваться в контору мазохистов, набирающих хаскель-программистов.
Как найдёшь - дай наводочку ;)
Ага, и мне тоже до кучи.
Попробуй начать использовать Haskell для решения повседневных задач и автоматизации рутины, это должно довольно быстро придать уверенности и принести немало приятных минут.
Во всяком случае, так бы поступил я сам, будь у меня такая возможность. Поскольку мне приходится работать с кодом, который придётся ковырять потенциально большому количеству разработчиков, мой основной инструмент автоматизации рутины и упрощения кода - python. Правда, хаскелевской системы типов сильно не хватает.
Правда в питоне уже сейчас можно писать функциональщину.
Для души - F#/Scala.
Зато расширяет сознание круче любых веществ.
если из модуля не экспортировать, то и указывать не нужно нигде. такого уровня вывода типов нигде нет
а твой фшарп - имеет говновывод типов, а скала вообще это умеет не лучше сишарпа, что для функционального языка просто позор
Придётся брать имя "Пукель" (Pykell)
Понимаю, не тк благозвучно как Пускель, но зато мелкософт не придирется.
Даёшь язык Pontryagin в продакшн!
(читается "Лоубатчэвски")
И ударение на "о".
Только подумайте как это будет звучать - говно на языке Bricks.
А поподробнее можно? Какие вещи автоматизируются?
Это как удобная замена башу?
Использую redis-py из питоньей консоли в качестве основного redis-cli клиента.
Возможно, запилим на нём автоматизированный конфигуратор.