본문 바로가기

Computer Science/Programming Language

[프로그래밍 언어/Racket] Datatype-Style Programming with Lists or Structs and more - 컴도리돌이

728x90
728x90

2020/05/21 - [컴퓨터 전공 공부/프로그래밍언어론] - [프로그래밍 언어/Racket] Racket introduction - 컴도리돌이-(1)

2020/05/28 - [컴퓨터 전공 공부/프로그래밍언어론] - [프로그래밍 언어/Racket] Thunks, Laziness, Streams, Memoization -컴도리돌이-(2)

2020/06/04 - [컴퓨터 전공 공부/프로그래밍언어론] - [프로그래밍언어/Racket] Macros - 컴도리돌이-(3)

2020/06/11 - [컴퓨터 전공 공부/프로그래밍언어론] - [프로그래밍 언어/Racket] Datatype-Style Programming with Lists or Structs and more - 컴도리돌이-(4)


Struct

 

(struct foo (bar baz qux) #: transparent)

 

#: transparent는 구조체 정의의 선택적 속성이다.

#: mutable 은 구조체 정의에 또 다른 선택적 속성이다. (더 많은 함수를 제공한다.)

 

<example>

(struct dog (age name sex) #: transparent)

 

 

 

dog이라는 구조체 안에는 나이와 이름 성별을 가지고 있다. my_dog이라는 dog 구조체 형식에 맞게 정의를 내렸다.

my_dog을 치면 dog 구조체 형식에 맞게 정의 내린 my_dog 구조체가 반환된다.

dog? 은 dog이라는 구조 형식을 가진 구조체를 가지고 있는지 확인해준다. 있으면 #t을 반환하지만, 없을 경우 #f을 반환한다.

 

<example>

(struct const (int) #:transparent)
(struct negate (e) #:transparent)
(struct add (e1 e2) #:transparent)
(struct multiply (e1 e2) #:transparent)

 

>(add 2 2) ;Incorrect Syntax

>(add (const 2) (const 2)) ; Correct Syntax

>(add (const 2) (bool #t)) ; Incorrect Semantics

728x90
728x90