CurryInfo: wui2-3.1.0 / HTML.WUI.wTriple

definition:
wTriple :: (Data a, Data b, Data c) =>
           WuiSpec a -> WuiSpec b -> WuiSpec c -> WuiSpec (a,b,c)
-- This simple implementation does not work in KiCS2 due to non-determinism
-- cause by functional patterns:
--wTriple = wCons3 (\a b c -> (a,b,c))
wTriple (WuiSpec wparamsa showa cora reada)
        (WuiSpec wparamsb showb corb readb)
        (WuiSpec wparamsc showc corc readc) =
  WuiSpec (renderTuple, tupleError, const True) showd cord readd
 where
  showd (render,errmsg,legal) nocheck (va,vb,vc) =
    let (hea,rta) = showa wparamsa nocheck va
        (heb,rtb) = showb wparamsb nocheck vb
        (hec,rtc) = showc wparamsc nocheck vc
     in ((if nocheck || legal (va,vb,vc)
            then render
            else renderError render errmsg) [hea,heb,hec],
         states2state [rta,rtb,rtc])

  cord wparamsd (va,vb,vc) = conditionOf wparamsd (va,vb,vc) &&
                             cora wparamsa va &&
                             corb wparamsb vb &&
                             corc wparamsc vc

  readd env s =
    let [ra,rb,rc] = state2states s
    in (reada env ra, readb env rb, readc env rc)
demand:
arguments 4 5 6
deterministic:
deterministic operation
documentation:
--- WUI combinator for triples.
failfree:
<FAILING>
indeterministic:
referentially transparent operation
infix:
no fixity defined
iotype:
{(_,_,_,{WuiSpec},{WuiSpec},{WuiSpec}) |-> {WuiSpec}}
name:
wTriple
precedence:
no precedence defined
result-values:
{WuiSpec}
signature:
(Prelude.Data a, Prelude.Data b, Prelude.Data c) => WuiSpec a -> WuiSpec b
-> WuiSpec c -> WuiSpec (a, b, c)
solution-complete:
operation might suspend on free variables
terminating:
yes
totally-defined:
possibly non-reducible on same data term