Initial commit - fix problems & refactor code
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
from typing import Any
|
||||
|
||||
from core.exceptions import syntaxError
|
||||
# from core.printer import Representation
|
||||
|
||||
class LinkedList:
|
||||
value = None
|
||||
nxt = None
|
||||
|
||||
def __init__(self, value_, nxt_):
|
||||
self.value = value_
|
||||
self.nxt = nxt_
|
||||
|
||||
def car(lst):
|
||||
return lst.value
|
||||
|
||||
def cdr(lst):
|
||||
return lst.nxt
|
||||
|
||||
def cons(val, lst):
|
||||
return LinkedList(val, lst)
|
||||
|
||||
def isList(val):
|
||||
return isinstance(val, LinkedList)
|
||||
|
||||
NIL = cons(None, None)
|
||||
@@ -0,0 +1,25 @@
|
||||
from functools import lru_cache
|
||||
|
||||
class Symbol:
|
||||
_name: str
|
||||
|
||||
def __init__(self, name):
|
||||
self._name = name
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return self._name
|
||||
|
||||
@lru_cache(maxsize=None)
|
||||
def symbol(name: str) -> Symbol:
|
||||
return Symbol(name)
|
||||
|
||||
def symbolName(sym: Symbol) -> str:
|
||||
# return sym.name[1:]
|
||||
return sym.name
|
||||
|
||||
def symbolKey(sym: Symbol) -> str:
|
||||
return sym.name
|
||||
|
||||
def isSymbol(obj) -> bool:
|
||||
return isinstance(obj, Symbol)
|
||||
Reference in New Issue
Block a user