Что лучше использовать охранники, чем шаблоны для функций рекурсии в Haskell?

Мне просто интересно узнать о функции рекурсии, которую я выкладываю в 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) =
8
задан Soviut 7 August 2011 в 09:41
поделиться