본문 바로가기

프로그래밍언어

(4)
[Haskell] 프로그래밍 언어론 - 하스켈 언어(4) - Type class, func, instance 본 글은 프로그래밍 언어론과 하스켈 언어에 대해 학습하는 글입니다.이번엔 하스켈의 유형중 타입과 타입클래스, 인스턴스에 대해 설명해봅니다.타입은 기본적으로 하스켈 라이브러리에서 지원되는 built in 타입이 있다.하지만 개발자의 임의대로 사용자정의 타입을 생성할수 있는데 이 방법에 대해서는 이전 문서를 통해 설명하였다. 타입은 data 키워드를 통해 정의되는데 먼저 다음 예시를 보자. data Numbers = None | One Int | Two Int Int 이 코드를 보면 Numbers 라는 기존에 존재하지 않던 타입을 새롭게 정의한것으로,이때 None, One, Two 은 사용자가 정의한 데이터 생성자이다.그런데 이렇게 타입 Numbers 를 정의해두면 자유롭게 해당 타입을 쓸수 있을까?그리고..
[Haskell] 프로그래밍 언어론 - 하스켈 언어(3) - Types 본 글은 프로그래밍 언어론과 하스켈 언어에 대해 학습하는 글입니다.이번엔 하스켈의 유형중 타입에 대해 설명해봅니다. 타입은 크게 기본타입과 조합타입이 존재한다.  1. 기본 타입 Type 종류값Bool 타입True, FalseInt 타입0, 1, -6Char 타입'A', 'b', '!'String 타입"", "aabb"Double 타입0.0, -1.2, 5.7() 타입()  실제로 타입을 사용해보자. 슬프게도 티스토리에서 기본으로 하스켈 언어을 지원하지 않아서.. 추후에 코드 블럭을 만들어보겠음..b1 :: Bool    -- b1 변수가 Bool 타입이라고 선언b1 = True    -- b1 변수에 True 값을 대입i1 :: Int    -- i1 변수가 Int 타입이라고 선언i1 = 20    -..
[Haskell]프로그래밍 언어론 - 하스켈 언어(2) - GHCI 와 Stack 본 글은 프로그래밍 언어론과 하스켈 언어에 대해 학습하는 글입니다. 하스켈은 프로젝트를 빌드하고 관리하는데 몇가지 유용한 툴을 제시한다. 1. GHCI하스켈은 본래 전통적인 프로그래밍 언어처럼 컴파일이 필요한 언어이다.(by ghc) 그런데 하스켈에서 제공하는 ghci 는 즉시 코드조각을 실행해볼 수 있는 REPL(Read-Eval-Print Loop) 환경이다.   이말은 기능적으로 인터프리터와 유사하게, 코드를 바이트코드나 중간표현으로 컴파일하여 즉시 실행할수 있게끔 지원한다. 2. stack 스택은 ...
[Haskell]프로그래밍 언어론 - 하스켈 언어(1) - Compile, translate 본 글은 프로그래밍 언어론과 하스켈 언어에 대해 학습하는 글입니다. haskell 은 함수형 언어로 무엇보다 함수가 우선시 되는 언어이다. 함수형 언어라 하면, python과 같이 컴파일이 없고 인터프리터의 활용이 예상되지만 전혀 아니다. 하스켈은 GHC라는 컴파일러를 통해 여러 중간 변환을 거쳐 기계어가 되는데 다음은 그 절차에 대한 나열이다. 더보기1. 소스코드 전처리 : 주석 제거, CPP 확장(전처리기 지시자 변환 등) 2. 파싱 : 전처리된 코드를 파싱해서 AST 생성(소스코드 토큰화 및 구조 분석) 3. 타입검사 : AST에 대한 정적 타입 시스템  4. core 생성 : desugaring을 거쳐서 단순화된 함수형 언어 표현 생성 5. 최적화 : 함수인라이닝 및 재귀 최적화 등 최적화 기법 ..