Pot utiliza expresii booleene in case cand sablonul e de alt tip ?

From HaskellWiki
Revision as of 19:42, 15 October 2007 by Ha$kell (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Un programator a scris odata:

fun x = case x of  
0 -> "zero" ;
1 -> "one" ;
otherwise -> "many"

Si s-a mirat ca acest cod functioneaza fara sa dea erori de tip !!

Ceea ce n-a stiut era faptul ca in case, dupa un sablon se pot adauga alternative
sub forma de predicate si fiecare poate avea alta formula a rezultatului lui case
de exemplu .

fun :: Int -> String  
fun x = case x of
0 -> "zero" ;
1 -> "one" ;
_ | x+1==4 -> "three"
| x+1==5 -> "four"
| otherwise -> "many"

Ceea ce a scris el este echivalent cu:

fun x = case x of  
0 -> "zero" ;
1 -> "one" ;
_ | otherwise -> "many"

Despre sintaxa completa a lui case se poate citi in Haskell 98 Language and Libraries - the Revised Report de Simon Peyton Jones (editor) paragraful 3.13 pagina 25, intitulat "Case expressions".

Intrebarea este preluata de la: [acest URL ] [probabil fiind preluata din grupul de aici]

Pagina in constructie.