Skip to content

Instantly share code, notes, and snippets.

@nattybear
Last active June 22, 2021 22:30
Show Gist options
  • Save nattybear/f3598068d604c82a6d1a6de44bf161a4 to your computer and use it in GitHub Desktop.
Save nattybear/f3598068d604c82a6d1a6de44bf161a4 to your computer and use it in GitHub Desktop.
하스켈 Prelude 안 쓰기

Prelude

하스켈 입문서를 읽다보면 모듈 Prelude에 선언되어 있는 기본 함수나 데이터 타입을 직접 구현해보는 연습 문제가 있다.

이때 원래 있던 것과 이름이 같을 경우 충돌이 생기는데 이를 방지하기 위한 몇 가지 방법이 있다.

이름에 ' 붙이기

가장 흔하고 쉬울 것 같은 방법인데 같은 이름을 안 쓰면 된다.

예를 들어 함수 map을 직접 구현하고 싶다면 이름 map 대신에 map'을 쓰면 된다.

map' :: (a -> b) -> [a] -> [b]

import hiding

두 번째 방법은 아래처럼 모듈 Prelude를 import 할 때 특정 이름을 제외하는 것이다.

import Prelude hiding (map)

이렇게 하면 직접 map을 구현해도 이름이 충돌하지 않을 것이다.

확장

마지막 방법은 GHC 확장을 쓰는 것이다. NoImplicitPrelude 라는 확장을 쓰면 아예 모듈 Prelude를 로드하지 않을 수 있는 것 같다.

소스 코드 제일 위에 아래처럼 적으면 된다.

{-# LANGUAGE NoImplicitPrelude #-}

대문 링크

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment