- 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
Fai 20.11.2012 03:15 # −5
bormand 20.11.2012 06:03 # +2
t - нота от 0 до 12
Считает частоту.
bormand 20.11.2012 06:41 # 0
Fai 20.11.2012 08:27 # −5
bormand 20.11.2012 09:42 # 0
Fai 20.11.2012 10:34 # +1
roman-kashitsyn 20.11.2012 10:43 # +4
Yuuri 20.11.2012 12:16 # +1
Кстати, Pitch лучше бы newtype.
Fai 20.11.2012 21:48 # 0
bormand 20.11.2012 22:14 # 0
Yuuri 21.11.2012 00:16 # +1
но я решительно не представляю, где они могут на практике пригодиться.
По идее, с достаточно умным компилятором отдельный newtype вообще не нужен.
bormand 21.11.2012 06:10 # +1
Fai 21.11.2012 06:51 # 0
bormand 21.11.2012 07:42 # 0
во-первых жопа (⊥) может таиться в самой переменной p. (p = undefined);
во-вторых жопа может находиться внутри Pitch'а (p = Pitch undefined).
С ньютайпом же Pitch undefined это просто undefined.
Fai 21.11.2012 08:04 # 0
Пользуясь случаем хочу спросить, куда мне дальше копать в хаскеле?
Если "Learn you a haskell" и "Real World Haskell" уже осилил, но считаю, что что-то серьезное на хаскеле писать тяжело при моих навыках.
bormand 21.11.2012 09:48 # 0
Fai 21.11.2012 10:02 # 0
Еще написал корявую версию words на своей корявой реализации монады State. Вообще ничего серьезного, но quickCheck'ом проверил - полное соответствие между моей и стандартной функцией.
Потом еще расширил до лексического анализатора (разделял имена, числа и операторы).
Попробую Project Euler, а вот проект какой начать потом даже не знаю... Все, что лезет в голову либо слишком сложно либо, наоборот, слишком просто.
3.14159265 21.11.2012 10:04 # +6
А теперь найди работу за которую платят деньги.
Проблемы "чего бы еще написать?" сразу отпадут.
По ходу дела станёт ясно что нужно, а что нет.
bormand 21.11.2012 10:42 # 0
Золотые слова.
Fai 21.11.2012 11:56 # 0
Ладно, пойду устраиваться в контору мазохистов, набирающих хаскель-программистов.
roman-kashitsyn 21.11.2012 11:58 # +5
Как найдёшь - дай наводочку ;)
bormand 21.11.2012 12:14 # +1
Ага, и мне тоже до кучи.
roman-kashitsyn 21.11.2012 12:06 # +5
Попробуй начать использовать Haskell для решения повседневных задач и автоматизации рутины, это должно довольно быстро придать уверенности и принести немало приятных минут.
Во всяком случае, так бы поступил я сам, будь у меня такая возможность. Поскольку мне приходится работать с кодом, который придётся ковырять потенциально большому количеству разработчиков, мой основной инструмент автоматизации рутины и упрощения кода - python. Правда, хаскелевской системы типов сильно не хватает.
Fai 21.11.2012 12:23 # +2
Правда в питоне уже сейчас можно писать функциональщину.
Vasiliy 21.11.2012 13:12 # +1
Fai 21.11.2012 13:21 # +1
Vasiliy 21.11.2012 14:05 # +1
Fai 21.11.2012 14:17 # +2
Для души - F#/Scala.
zim 24.11.2012 09:50 # 0
Зато расширяет сознание круче любых веществ.
Fai 24.11.2012 10:38 # 0
guest 24.11.2012 12:39 # 0
если из модуля не экспортировать, то и указывать не нужно нигде. такого уровня вывода типов нигде нет
а твой фшарп - имеет говновывод типов, а скала вообще это умеет не лучше сишарпа, что для функционального языка просто позор
guest 24.11.2012 12:36 # 0
roman-kashitsyn 21.11.2012 14:54 # +5
Придётся брать имя "Пукель" (Pykell)
PascalGovno 21.11.2012 15:00 # +4
Fai 22.11.2012 02:37 # 0
Понимаю, не тк благозвучно как Пускель, но зато мелкософт не придирется.
roman-kashitsyn 22.11.2012 10:44 # +1
Даёшь язык Pontryagin в продакшн!
TarasB 22.11.2012 11:05 # 0
(читается "Лоубатчэвски")
PascalGovno 22.11.2012 12:51 # +1
eth0 22.11.2012 16:42 # 0
И ударение на "о".
Yuuri 22.11.2012 19:49 # 0
3.14159265 22.11.2012 20:35 # +1
Только подумайте как это будет звучать - говно на языке Bricks.
Yuuri 22.11.2012 21:19 # 0
bormand 22.11.2012 21:28 # 0
3.14159265 22.11.2012 21:51 # 0
А поподробнее можно? Какие вещи автоматизируются?
Это как удобная замена башу?
roman-kashitsyn 22.11.2012 22:51 # 0
Использую redis-py из питоньей консоли в качестве основного redis-cli клиента.
Возможно, запилим на нём автоматизированный конфигуратор.
Fai 23.11.2012 01:11 # 0