Concurrent Clean : CleanJ : レコード型 : とりあえず動いた。

レコード型の実装の確認に使っていたテストがパスして、実装が一段落。
次は、型クラスが今のレコード型の実装で正しく動作するかどうかの確認と、型クラス関連のテストをたくさん。
その辺が終わり次第、正格リストの実装の検討に入ります。

      • -

実際に動作確認したテストはこちら。

module Record

import StdEnv

::LazyRecord =
    { i :: Int
    , r :: Real
    , c :: Char
    , b :: Bool
    , s :: String
    }

::StrictRecord =
    { i :: !Int
    , r :: !Real
    , c :: !Char
    , b :: !Bool
    , s :: !String
    }

l = {LazyRecord
    | i = inc 1
    , r = inc 1.1
    , c = inc 'a'
    , b = not True
    , s = "ab" +++ "c"
    }

s = {StrictRecord
    | i = inc 1
    , r = inc 1.1
    , c = inc 'a'
    , b = not True
    , s = "ab" +++ "c"
    }

larr :: {LazyRecord}
larr = {l,l,l}

ularr :: {#LazyRecord}
ularr = {l,l,l}

sarr :: {StrictRecord}
sarr = {s,s,s}

usarr :: {#StrictRecord}
usarr = {s,s,s}

Start = (l.LazyRecord.i,s.StrictRecord.i,l,s,larr,ularr,sarr,usarr)