refutable
In lazy functional languages, a refutable pattern is one which may fail to match. An expression being matched against a refutable pattern is first evaluated to head no rmal fo rm (which may fail to te rminate) and then the top-level constructor of the result is compared with that of the pattern. If they are the same then any arguments are matched against the pattern' s arguments otherwise the match fails. An irrefutable pattern is one which always matches. An attempt to evaluate any variable in the pattern forces the pattern to be matched as though it were refutable which may fail to match (resulting in an error) or fail to te rminate. Patterns in Haskell are no rmally refutable but may be made irrefutable by prefixing them with a tilde (~). For example, ( (x,y) -> 1) undefined ==> undefined ( ~(x,y) -> 1) undefined ==> 1 Patterns in Miranda are refutable, except for tuples which are irrefutable. Thus g [x] = 2 g undefined ==> undefined f (x,y) = 1 f undefined ==> 1 Pattern bindings in local definitions are irrefutable in both languages: h = 1 where [x] = undefined ==> 1 Irrefutable patterns can be used to simulate unlifted products because they effectively ignore the top-level constructor of the expression being matched and consider only its components. In addition suitable contents: [ 2 ] [ = ] [ ad ] [ ag ] [ ai ] [ al ] [ am ] [ an ] [ ar ] [ arg ] [ argument ] [ as ] [ at ] [ au ] [ az ] [ b ] [ be ] [ bi ] [ bo ] [ bot ] [ by ] [ ca ] [ ch ] [ co ] [ com ] [ component ] [ con ] [ cons ] [ constructor ] [ de ] [ ding ] [ du ] [ ec ] [ ed ] [ er ] [ error ] [ es ] [ expression ] [ fi ] [ fix ] [ fo ] [ for ] [ function ] [ functional ] [ functional language ] [ ga ] [ ge ] [ gh ] [ gn ] [ gs ] [ gu ] [ h ] [ hat ] [ hu ] [ id ] [ il ] [ in ] [ io ] [ ir ] [ irrefutable ] [ is ] [ it ] [ ke ] [ la ] [ language ] [ ld ] [ li ] [ ls ] [ lt ] [ lu ] [ ly ] [ M ] [ ma ] [ mall ] [ Miranda ] [ mp ] [ mu ] [ na ] [ nc ] [ ne ] [ ng ] [ ni ] [ nl ] [ no ] [ norm ] [ normal form ] [ ns ] [ om ] [ op ] [ pa ] [ pl ] [ pr ] [ prefix ] [ product ] [ pt ] [ rc ] [ re ] [ ro ] [ ru ] [ rw ] [ sa ] [ sam ] [ se ] [ si ] [ sk ] [ st ] [ struct ] [ su ] [ T ] [ ] [ table ] [ tc ] [ th ] [ tilde ] [ to ] [ tr ] [ tt ] [ tuple ] [ ua ] [ ug ] [ um ] [ up ] [ us ] [ va ] [ var ] [ variable ] [ ve ] [ ~ ]
[ Go Back ]
Free On-line Dictionary of Computing Copyright © by OnlineWoerterBuecher.de - (6063 Reads) |