プログラミングキャンプ日記

超現実数

    def assert_numeric(self):
        for x in self.left:
            for y in self.right:
                assert x < y

って朝ご飯食べに行かないとだな。


抽象構文木とそうじゃない構文木(Pythonの場合)

>>> import ast # 2.6以降
>>> ast.dump(ast.parse("1+2"))
'Module(body=[Expr(value=BinOp(left=Num(n=1), op=Add(), right=Num(n=2)))])'
>>> import parser, symbol, token
>>> def change(ast):
...     if type(ast) is list:
...         return map(change, ast)
...     else:
...         leaf = symbol.sym_name.get(ast, ast)
...         return token.tok_name.get(leaf, leaf)
... 
>>> change(parser.ast2list(parser.expr("1+2")))
['eval_input', ['testlist', ['test', ['or_test', ['and_test', ['not_test', 
['comparison', ['expr', ['xor_expr', ['and_expr', ['shift_expr', 
['arith_expr', ['term', ['factor', ['power', ['atom', ['NUMBER', '1']]]]], 
['PLUS', '+'], ['term', ['factor', ['power', ['atom', ['NUMBER', 
'2']]]]]]]]]]]]]]]], ['NEWLINE', ''], ['ENDMARKER', '']]


インドネシア


オートロックに閉め出された><


Coqで超現実数が任意の有理数を表現できることの証明を書こうとしたがリファレンスを眺めて挫折した。