Atom('a', 3, 'xyz')とすれば,3や,'xyz'は暗黙的に変換されます. すなわち,
Atom('a', Integer(3), String('xyz'))と指定されたのと同じことです.
暗黙的変換は,入れ子になっていても働きます.
であれば,a = Atom('a') b = Atom('b') a(b(5, 8.0), ['abc', 'def'])
a(b(Integer(5), Float(8.0)), List(String('abc'), String('def')))と同じです.
尾部を持ったリストについては,対応する表現がPythonに無いので,
のように記述します.X = Variable('X') List(5, 'xyz', tail=X)
暗黙的変換を行うメソッドについては,その都度説明します.