mi chiedevo il modo corretto ed elegante per fare una cosa simileCome fare un se poi il resto se la struttura di controllo come espressione (in un modo carino)
function candy = case (color candy) of
Blue -> if (isTasty candy) then eat candy
else if (isSmelly candy) then dump candy
else leave candy
ho provato
function candy = case (color candy) of
Blue -> dealWith candy
where dealWith c
| isTasty c = eat candy
| isSmelly c = dump candy
| otherwise = leave candy
Qualcuno sa come migliorare su questo?
PIÙ
So che posso usare questa
function candy = case (color candy) of
Blue -> case() of
_ | isTasty candy -> eat candy
| isSmelly candy -> dump candy
| otherwise -> leave candy
Ma usando un case
pur non corrispondenti nulla solo non sembra essere la strada giusta.
Alla fine sono andato con il tuo approccio. Tuttavia, vorrei sapere la risposta al perché avere una definizione di funzione in dove non funziona – lynnard
@ yulan6248: Funziona bene qui. Ti è permesso avere una clausola 'where' su ogni alternativa di un' caso', e sono condivisi tra guardie, proprio come su una funzione. Vedi [il rapporto Haskell] (http://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-460003.13) per i dettagli. – hammar
Thx, il mio male, è un problema di indentazione. Sono un super-principiante di Haskell e sopporto me per aver fatto domande stupide – lynnard