Pull to refresh

Comments 7

Я конечно фанат, Haskell, но вы как-то плохо его популяризируете =)
Уберите пожалуйста эти пугающие типы у read, они легко выводятся из использования (solve и printNSolutions принимают Int).
Там где вы считываете два числа можно сразу их распаковать:
let n1 : n2 : [] = map read $ words numsStr
А конец итерации лучше заменить на:
printNSolutions 0 = return ()
Не ставил своей целью популяризацию языка, скорее хотел помочь новичкам, показав, что такие программы, обычно пишущиеся на императивных языках, не так уж и сложно пишутся и на Хаскеле.

Про типы у read согласен, выглядит страшно, но я не могу избавиться от параноидальной привычки явно их указывать) Да и так более наглядно, я думаю.

А про такой удобный способ распаковки даже не подумал, спасибо за совет!
Добавлю в пост ваши замечания.

let n1 : n2 : [] = ...
можно заматчить и так:
let [n1, n2] = ...
Круто, спасибо!
*на самом деле я тоже в Хаскеле новичок=)
Как вы находите время так воду лить во время соревнования, обычно выходит что-то вроде:
main = putStr.unlines.map(show.solve.map read.words).tail.lines=<<getContents
	where { solve (0:_) = 0; solve (_:0:_) = 0; solve (a:b:_) = if a >= b then (div a b) + solve [b,(mod a b)] else solve [b,a]; }


Задача та же самая.
Я еще новичок в Хаскеле, поэтому пока не рискую использовать его во время реальных контестов. Вот и решаю задачи со старых контестов для того, чтобы лучше изучить Хаскель.
UFO just landed and posted this here
Sign up to leave a comment.

Articles