definition: |
wPair :: (Data a, Data b) => WuiSpec a -> WuiSpec b -> WuiSpec (a,b) -- This simple implementation does not work in KiCS2 due to non-determinism -- cause by functional patterns: -- wPair = wCons2 (\a b -> (a,b)) wPair (WuiSpec wparamsa showa cora reada) (WuiSpec wparamsb showb corb readb) = WuiSpec (renderTuple, tupleError, const True) showc corc readc where showc (render,errmsg,legal) nocheck (va,vb) = let (hea,rta) = showa wparamsa nocheck va (heb,rtb) = showb wparamsb nocheck vb in ((if nocheck || legal (va,vb) then render else renderError render errmsg) [hea,heb], states2state [rta,rtb]) corc wparamsc (va,vb) = conditionOf wparamsc (va,vb) && cora wparamsa va && corb wparamsb vb readc env s = let [ra,rb] = state2states s in (reada env ra, readb env rb) |
demand: |
arguments 3 4 |
deterministic: |
deterministic operation |
documentation: |
--- WUI combinator for pairs. |
failfree: |
<FAILING> |
indeterministic: |
referentially transparent operation |
infix: |
no fixity defined |
iotype: |
{(_,_,{WuiSpec},{WuiSpec}) |-> {WuiSpec}} |
name: |
wPair |
precedence: |
no precedence defined |
result-values: |
{WuiSpec} |
signature: |
(Prelude.Data a, Prelude.Data b) => WuiSpec a -> WuiSpec b -> WuiSpec (a, b) |
solution-complete: |
operation might suspend on free variables |
terminating: |
yes |
totally-defined: |
possibly non-reducible on same data term |