• 제목/요약/키워드: 함수형 언어

검색결과 88건 처리시간 0.021초

자바가상기계를 대상으로 하는 지연계산기반 함수형 언어 컴파일러의 설계 및 구현 (Design and Implementation of a Lazy Functinal Language Compiler for Java Virtual Machine)

  • 최광훈;임현일;한태숙
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2000년도 가을 학술발표논문집 Vol.27 No.2 (1)
    • /
    • pp.326-328
    • /
    • 2000
  • 본 논문에서는 지연계산기반 함수형 언어 프로그램을 받아 Java 프로그램을 목적 코드로 생성하는 컴파일러를 설계하고 구현한다. 이 컴파일러는 제한된 형태의 함수형 언어 Shared Term Graph(STG)를 입력언어로 하는 추상기계 Spineless Tagiess G-Machine (STGM)을 수행 모델로 한다. 본 논문에서는 명령형 언어 L-code를 제안하고 이를 입력언어로 하는 새로운 형태의 STGM인 L-Machine을 제안한다. STG 언어를 L-code로 변환하는 컴파일러와 L-code를 Java로 변환하는 컴파일러를 설계하고 구현함으로써 원하는 컴파일러를 구성한다. 그리고 Glasgow Haskell 컴파일러를 전단부로 하여 지연계산 기반 함수형 언어 Haskell로 작성된 프로그램들을 컴파일하여 STG 프로그램으로 변환한 다음 본 논문에서 구현한 컴파일러로 이를 Java 프로그램으로 변환한다. 변환된 Java 프로그램을 Sun JIT 컴파일러로 컴파일하여 수행한 성능 평가 결과를 제시한다.

  • PDF

지연 함수형 프로그래밍 언어의 항 개서 의미 (Term Rewriting Semantics of Lazy Functional Programming Languages)

  • 변석우
    • 한국정보과학회논문지:시스템및이론
    • /
    • 제35권3호
    • /
    • pp.141-149
    • /
    • 2008
  • 대부분의 함수형 프로그래밍 언어에서는 '위에서 아래쪽, 왼쪽에서 오른쪽 방향으로' 패턴 매칭(pattern matching)을 한다는 전략에 따라, 모호한(ambiguous) 특성을 갖는 룰의 정의를 허용하고 있다. 이 방법은 함수형 프로그래머에게 디폴트 룰을 정의할 수 있게 하는 직관적인 편리함을 제공하지만, 한편으로 모호한 룰 때문에 함수형 언어의 의미는 불명확해 질 수 있다. 좀 더 구체적으로, 함수형 언어가 갖는 대표적인 특성인 등식 추론(equational reasoning) 원리의 적용을 불가능하게 할 수 있으며, 함수형 언어를 람다 계산법으로 변환하는 데 있어서도 정형적인 방법이 아닌 임시방편적인(ad hoc) 방법에 의존할 수밖에 없게 한다. 본 연구에서는 지연(lazy) 함수형 언어의 패턴 매칭의 의미를 순수 선언적 특성을 갖는 항 개서 시스템(Term Rewriting Systems)의 분리성(separability) 이론과 연관시키고, 분리성 이론에 따라 지연 함수형 언어가 람다 계산법으로 변환될 수 있음을 보인다.

상태를 갖는 명령형 함수언어의 설계 (A design of the imperative functional language with state)

  • 주형석
    • 한국컴퓨터산업학회논문지
    • /
    • 제2권10호
    • /
    • pp.1261-1268
    • /
    • 2001
  • 함수언어는 여러 가지 유용한 특징에도 불구하고 상태를 나타내기 위한 효율적인 방법을 제공하지 못하고있다. 함수언어의 표현력을 높이기 위해서는 함수언어의 의미를 위배함이 없이 상태를 명시적으로 나타내기 위한 방법이 요구된다. 이 연구에서는 순수 함수언어의 성질을 위배함이 없이 상태를 표현하기 위한 명령형 함수언어 $\lambda$st-계산을 설계하였고 제안된 명령형 함수언어를 감축하기 위한 알고리즘을 구성하였다. $\lambda$-계산에 명시적인 상태 구성자를 확장한 $\lambda$st-계산 모델은 상태의 합성 개념을 도입하고 감축규칙을 간략화 함으로써 구문구조의 표현력을 향상시켰다.

  • PDF

상태를 갖는 함수형 프로그래밍 언어의 수행모델 (Exeution Model for Functional Programming Language with States)

  • 주형석;김홍읍;유원희
    • 한국정보처리학회논문지
    • /
    • 제4권3호
    • /
    • pp.846-858
    • /
    • 1997
  • 순수 함수형 프라그래밍 언어는 명확한 어의와 많은 특성에도 불구하고 상태의 표현이 어렵다는 문제점을 가지고 있다 이와 같은 문제로 인힝순수 함수형 언어에 상태를 표현 하기 위한 많은 연구가 진행되었으나 형시스템이나 감축규칙이 복잡하기 때문에 구현이 어렵다는 문제점이 발생된다. 따라서 효율적인 구현기 위해 감축규칙을 단순화시키고 상태를 효율적으로 관리할 수 있는 방안이 요구 된다. 본 논문에서는 순수 함수형 언어 의 성질을 침해함이 없이 상태를 표현할 수 있으며 감축규칙을 단순화 시킨 함수형 언어의 수행모델st-계산을 제안하고, 제안된 모델이 church-roser 정리를 만족함을 증명 하였다. 제안된 방법을 통해 구문구조의 표현력을 높일 수 있었으며, 감축규칙을 단순화 함으로써 구현이 용이할 것으로 기대된다.

  • PDF

Eval-Apply 모델의 STGM에 기반하여 지연 계산 함수형 프로그램을 자바로 컴파일하는 기법 (Compiling Lazy Functional Programs to Java on the basis of Spineless Taxless G-Machine with Eval-Apply Model)

  • 남병규;최광훈;한태숙
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제29권5호
    • /
    • pp.326-335
    • /
    • 2002
  • 최근에 지연 계산 함수형 언어를 자바 프로그램으로 변환함으로써 지연 계산 함수형 언어 프로그램에 대해 코드 이동성을 제공하려는 연구가 있었다. 이러한 연구들은 자바와 지연 계산형 함수형 언어의 추상 기계가 가지는 구조적 유사성에 바탕을 두고 있다. 지연 계산 함수형 언어에 대한 추상 기계인 STGM(Spineless Tagless G-machine)과 자바 언어에 대한 추상 기계인 JVM(Java Virtual Machine)은 기억장소 재활용 체계와 스택 기계 구조를 가진다는 점에서 공통된 특징을 가지고 있다. 그러나 현재가지의 지연 계산 함수형 언어로부터 자바로의 변환 구조는 이와 같은 추상 기계 구조상의 공통점을 충분히 이용하지 못하였다. 본 논문에서는 STGM의 계산 모델을 eval-apply 모델로 새로이 정의함으로써 STGM과 JVM의 공통점을 충분히 이용하는 새로운 변환 구도를 제안한다. 새로이 제안된 변환 구도에서는 자바 스택(Java Virtual Machine Stack)을 사용하여 함수 계산을 수행하도록 함으로써 스택 시뮬레이션으로 인해 나타나는 자바에서의 배열 접근 부담을 제거하였다. 본 논문의 변환 구도에 의해 자바로 변환된 벤치마크 프로그램들은 기존의 변환 구도에 의해 변환된 경우보다 JDK 1.3에서 빠르게 동작한다.

게임 프로그래밍을 위한 순수 함수형 언어의 활용 (Apply A Pure Functional Language for Game Programming)

  • 이동주;변석우;우균
    • 한국콘텐츠학회:학술대회논문집
    • /
    • 한국콘텐츠학회 2005년도 춘계 종합학술대회 논문집
    • /
    • pp.464-469
    • /
    • 2005
  • 일반적으로 게임 프로그램을 구현할 때 C언어와 같은 명령형 프로그래밍 언어가 주로 사용된다. 하지만 복잡하고 다양한 그림의 모습 및 동작을 표현하기에는 프로그래머의 많은 노력이 요구된다. 복잡한 게임 프로그램을 보다 간결하고 명확하게 표현하는 방법으로 순수 함수형 언어인 Haskell을 이용하는 방법을 시도한다. Haksell과 같은 순수 함수형 프로그래밍은 기술적인 우수성을 가지고 있으며, 현재 많은 분야에서 특화된 언어로 되고 있다. 본 논문에서는 동일한 게임을 Haskell과 C로 직접 구현함으로서, 게임 개발 측면에서 두 언어의 차이점과 장단점에 대해서 논의한다. 또한 향후 Haskell의 실용화 가능성에 대해서도 논의한다.

  • PDF

ERLANG으로 구현한 웹서버 YAWS의 기능개선 (Improvement of YAWS implemented by ERLANG)

  • 장재원;양하영;유정목;이만호
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2004년도 봄 학술발표논문집 Vol.31 No.1 (A)
    • /
    • pp.394-396
    • /
    • 2004
  • 함수형 언어를 사용하여 작성한 응용 어플리케이션은 성능이 떨어진다는 생각이 지배적이다. 함수형 언어 ERLANG은 성능이 우수한 통신응용프로그램을 작성하기 위하여 개발되었다. ERLANG으로 작성한 웹서버인 YAWS는 범용 웹서버와 성능면에서 뒤지지 않지만 모든 웹 프로그래밍 언어를 지원하지 않는다. 본 연구는 Jsp/Servlets을 서비스 할 수 있도록 YAWS의 기능을 개선하였다.

  • PDF

CPS 변환 후에도 함수형 SLam 언어의 안전성 정확하게 분석하기 (Avoiding Security Analysis Inaccuracy of SLam Calculus after CPS Transform)

  • 장성순;이광근
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2001년도 봄 학술발표논문집 Vol.28 No.1 (A)
    • /
    • pp.76-78
    • /
    • 2001
  • Secure Lambda calculus(SLam)는 정보 보안을 보장해주는 언어이나, Continuation Passing Style(CPS) 변환 후에는 안전성 분석의 정확도가 떨어진다. CPS의 논리적인 성질(ordered linearity)을 반영하여 변환 후에도 정확도가 떨어지지 않는 타입 시스템을 고안하고 무간섭성을 증명하였다. 함수형 SLam 언어에서 정확도가 떨어지는 경우는 앞으로 계산할 값의 인자가 쓰이지 않는 경우임을 밝혀내었다.

함수형 모나드 프로그래밍 (Functional Monadic Programming)

  • 변석우
    • 한국정보통신학회논문지
    • /
    • 제5권1호
    • /
    • pp.192-201
    • /
    • 2001
  • 순수 함수형 언어의 선언적 특성과 지인 계산의 특성을- 유지하면서 side-effect, 입출력, 예외처리, 비절정성 등을 프로그래밍 하는 것은 순수 함수형 프로그래밍 연구의 오랜 숙제였다. 1989년에 개발된 모나드 프로그래밍 기법은 이 문제를 해결할 수 있는 가능성을 제시하고 있다. 본 고에서는 함수형 모나드 프로그래밍의 기본원리와 순수 함수형 언어 Haskell을 이용한 여러 응용 프로그래밍 기법에 대해서 소개한다.

  • PDF

Feasibility Study Of Functional Programming In Scala Language By Implementing An Interpreter

  • Sugwoo, Byun
    • 한국컴퓨터정보학회논문지
    • /
    • 제28권2호
    • /
    • pp.111-119
    • /
    • 2023
  • 본 논문에서는 스칼라 언어의 함수형 프로그래밍 기능의 타당성에 대해서 검토한다. 주된 관심사는 스칼라가 어느 정도까지 람다 식, 고차 함수, 제너릭 타입, 대수적 타입, 모나드 등 함수형 프로그래밍의 주요 특성을 표현할 수 있는 가에 있다. 이 목적을 위하여 명령형 프로그래밍 언어의 인터프리터를 구현한다. 동일한 함수형 프로그래밍 기법을 적용하여 인터프리터를 하스켈과 스칼라로 구현한 다음, 이 두 버전의 구현을 비교 분석한다. 명령형 프로그래밍 언어의 추상 구문트리는 스칼라의 제너릭스를 갖는 대수적 타입과 enum 클래스로서 표현되고, 명령형 프로그래밍의 상태 변환은 상태 모나드를 이용하여 구현된다. 또한 스칼라의 새로운 기능인 extension과 given도 사용된다.