def standard_env():
import math
import operator
from functools import reduce
env = Env()
env.update(vars(math))
env.update({'+': lambda *args: reduce(lambda x, y: x + y, args),
'-': lambda *args: reduce(lambda x, y: x - y, args),
'*': lambda *args: reduce(lambda x, y: x * y, args),
'/': lambda *args: reduce(lambda x, y: x / y, args),
'>': lambda x, y: x > y,
'>=': lambda x, y: x >= y,
'<': lambda x, y: x < y,
'<=': lambda x, y: x <= y,
'=': lambda x, y: x == y,
'abs': abs,
'append': lambda *args: reduce(lambda x, y: x + y, args),
'begin': lambda *x: x[-1],
'car': lambda x: x[0],
'cdr': lambda x: x[1:],
'cons': lambda x, y: [x] + y,
'eq?': lambda x, y: isinstance(x, y),
'equal?': lambda x, y: x == y,
'length': len,
'list': lambda *x: list(x),
'list?': lambda x: isinstance(x, list),
'map': map,
'min': min,
'max': max,
'not': operator.not_,
'null?': lambda x: x == [],
'number?': lambda x: isinstance(x, Number),
'procedure': callable,
'round': round,
'symbol': lambda x: isinstance(x, Symbol)
})
return env
评论列表
文章目录