PL λαβ

Lab 1.1: Data 만들기 본문

kos

Lab 1.1: Data 만들기

감자봤어? 2021. 4. 6. 19:09

LISP 구현의 첫 단계로 데이터를 표현해 봅니다. 프로그램은 데이터를 처리하기 위한 것이지요? 따라서 먼저 데이터를 나타내는 것이 중요합니다. 이 장에서는 데이터를 표현하고 이를 출력하는 방법에 대해 알아봅니다.

#데이터 표현

데이터를 표현해 봅시다. Python은 타입에서 자유로우므로 union은 필요 없습니다. 대신 value 필드를 여러 용도로 쓸 수 있을 것 같아요. 일단 type 필드는 1은 int로 2는 pair로 정했습니다. 나머지는 필요에 따라 정하면 될 것 같은데, 본인이 정한 것이 있으면 여기에 댓글로 적어 주시면 됩니다. 충돌될 경우에는 먼저 적은 분 우선입니다.

class Data:
    def __init__(self, type=0, value=0):
        self.type = type
        self.value = value
    def car(self):
        return value[0]
    def cdr(self):
        return value[1]
    def __str__(self):
        return "babo~ya"
    
def cons(d1, d2):
    return Data(2, (d1, d2))    # 2: pair

def mkint(n):
    return Data(1, n)           # 1: int

if __name__ == "__main__":
    print(mkint(3))
Comments