Python.use(better)《余録》VDM_map.domTo

記事一覧

Python.use(better)
《余録》VDM_map.domTo

《著》小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2001/03/02 ● 第1版♪2003/05/25 ● 第2版♪2004/06/01 ● 第3版♪2009/02/28

課題:VDM_map.inverse

VDM++/map で規定された <: 演算〔Domain restricted to〕に準拠したものを実現します。

>>> # -------------------------------------------------- domTo
>>> m = VDM_map({e:ord(e) for e in "ABC"}); m
{'A' |-> 65, 'B' |-> 66, 'C' |-> 67}
>>> m.domTo("CD")
{'C' |-> 67}
>>> m.domTo("")
{}
>>> m.domTo("C")
{'C' |-> 67}
>>> m.domTo("D")
{}
>>> 

写像 m に対して、定義域を限定した写像が得られます。

《Note》VDM++ では、次のような演算が規定されています。

s <: m
Domain restricted to creates the map consisting of the elements in m whose key is in s.
s need not be a subset of dom m. 

(set of A) ∗ (map A to B) → map A to B


。□

課題:テストケース

def ex_domTo(spec, local):
    X = 'm = VDM_map({e:ord(e) for e in "ABC"}); m'
    print_(X, local)
    
    for e in "CD","","C","D":
        try:
            X = 'm.domTo({0!r})'.format(e)
            print_(X, local)
        except AssertionError as error:
            print(error)

課題:コードの解説

VDM++/map で規定された <: 操作に準拠した機能を実現します。

class VDM_map(VDM_object):    
    def domTo(self, iterable):
        m = {k:v for k,v in self.dict.items() if k in iterable}
        return VDM_map(m)

》こちらに移動中です《
TOP


関連記事

Last updated♪2009/10/11