Мне просто интересно узнать о функции рекурсии, которую я выкладываю в Haskell. Что лучше для рекурсивных функций использовать охранники, чем шаблоны?
Я просто не уверен, какой макет лучше, но я знаю, что шаблоны лучше при определении таких функций, как эта:
units :: Int -> String
units 0 = "zero"
units 1 = "one"
намного предпочтительнее, чем
units n
| n == 0 = "zero"
| n == 1 = "one"
Я просто не уверен, хотя когда дело доходит до к рекурсии относительно того, одинаковы они или разные.
Просто не совсем уверен в терминологии: я использую что-то вроде этого:
f y [] = []
f y (x:xs)
| y == 0 = ......
| otherwise = ......
или это было бы лучше?
f y [] = []
f 0 (x:xs) =
f y (x:xs) =