First-order function

Ahn9807 (토론 | 기여)님의 2023년 2월 26일 (일) 07:54 판 (새 문서: 분류: 프로그래밍 언어 == 개요 == First-order 함수는 function의 인자로 다른 함수를 받거나, return으로 함수를 내보내지 못하는 함수를 의미한다. Environment(Env)를 다음과 같이 Id를 특정 값으로 매핑하는 집합이라고 하자 (즉, val x= 5; 에서 x가 어떤 값인지를 찾아주는 집합이다). 이떄 Env 를 다음과 같이 정의하면: :<math>Env \,\, \sigma \in Id \rightarrow (Id \times Expr) </math> First-...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


개요

First-order 함수는 function의 인자로 다른 함수를 받거나, return으로 함수를 내보내지 못하는 함수를 의미한다.

Environment(Env)를 다음과 같이 Id를 특정 값으로 매핑하는 집합이라고 하자 (즉, val x= 5; 에서 x가 어떤 값인지를 찾아주는 집합이다). 이떄 Env 를 다음과 같이 정의하면:

[math]Env \,\, \sigma \in Id \rightarrow (Id \times Expr) [/math]

First-order 함수(Func, Func(x) => e)는 다음과 같이 정의할 수 있다.

[math]\begin{array}{c} {x\in\mathit{Domain}(\sigma) } \\\hline {\sigma,Func\vdash x\Rightarrow \sigma(x)} \end{array}[/math]
  • Domain의 의미는 x가 함수가 받는 인자와 같은 타입임을 의미한다.

Abstract syntax를 통해서 나타내면 다음과 같다.

  case App(f, a) =>
    val (x, e) = lookupFD(f, fEnv)
    interp(e, Map(x -> interp(a, env, fEnv)), fEnv)

참고

  1. https://hjaem.info/articles/en_10_7