definition: |
wJoinTuple :: (Data a, Data b) => WuiSpec a -> WuiSpec b -> WuiSpec (a,b) wJoinTuple (WuiSpec wparamsa showa cora reada) (WuiSpec wparamsb showb corb readb) = WuiSpec (renderTuple, tupleError, const True) showc corc readc where render2joinrender render [h1,h2] = let h1s = unRenderTuple h1 h2s = unRenderTuple h2 in render (h1s ++ h2s) 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 render2joinrender render else renderError (render2joinrender 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 to combine two tuples into a joint tuple. --- It is similar to wPair but renders both components as a single --- tuple provided that the components are already rendered as tuples, --- i.e., by the rendering function `renderTuple`. --- This combinator is useful to define combinators for large tuples. |
failfree: |
<FAILING> |
indeterministic: |
referentially transparent operation |
infix: |
no fixity defined |
iotype: |
{(_,_,{WuiSpec},{WuiSpec}) |-> {WuiSpec}} |
name: |
wJoinTuple |
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 |