演算 dom/rng を実現する
VDM++ での演算 dom/rng に準拠するように(モジュール VDM_Map で)関数 dom/rng を実現します。
def dom(m):
"""
dom m
; map A to B -> set of A
;
; Domain
; yields the domain (the set of keys) of m.
"""
return VDM_Set(m.dict.keys())
関数 dom は、写像 m のキー集合を生成して、これをリターン値とします。
《関連記事》Python の組み込み型 dict には、次のメソッドが規定されています。
a.keys()
変数 a が dict 型の値を束縛するとき、そのキー要素をもとにした、list 型の値が得られます。□
def rng(m):
"""
rng m
; map A to B -> set of B
;
; Range
; yields the range (the set of information values) of
; m.
"""
return VDM_Set(m.dict.values())
関数 rng は、写像 m の値集合を生成して、これをリターン値とします。
《関連記事》Python の組み込み型 dict には、次のメソッドが規定されています。
a.values()
変数 a が dict 型の値を束縛するとき、その値要素をもとにした、list 型の値が得られます。□
《ひよ子のきもち♪2008/08/23》