Concurrent Clean : CleanJ : push_args_u
懸案のpush_args_uは、レコード型のパターンマッチをするときに使われるらしい。
以下、テストコード。
::Rec1 = {r1i :: Int, r1s :: String, r1r :: Rec2} ::Rec2 = {r2i :: Int, r2s :: String, r2r :: Rec3} ::Rec3 = {r3i :: Int, r3s :: String} Start = addup $ create1 3 create1 a = {r1i = a ,r1s = {x \\ x <- repeat 'a' & y <- [0..a]} ,r1r = create2 (a+1)} create2 a = {r2i = a ,r2s = {x \\ x <- repeat 'a' & y <- [0..a]} ,r2r = create3 (a+1)} create3 a = {r3i = a ,r3s = {x \\ x <- repeat 'a' & y <- [0..a]}} addup :: !Rec1 -> Int addup {r1i, r1r={r2i, r2r={r3i}}} = r1i + r2i + r3i