Skip to content

Instantly share code, notes, and snippets.

View nattybear's full-sized avatar

Joonkyu Park nattybear

View GitHub Profile
@nattybear
nattybear / hakyll.md
Last active November 20, 2024 02:47
하스켈/hakyll

우분투에서 hakyll 빌드할 때

우분투에서 하스켈 패키지 hakyll을 빌드할 때 다음과 같이 외부 의존성을 먼저 설치해야 한다.[^1]

sudo apt install zlib1g

cabal로 빌드를 시도하면 zlib가 없다고 안내를 해주지만 stack으로 빌드할 때는 무엇이 문제인지 파악하기 어렵다.

@nattybear
nattybear / cabal.md
Last active November 20, 2024 02:47
cabal/cabal build all

cabal build all

cabal 프로젝트를 빌드할 때 아래와 같이 하면 진정한(?) 전체 빌드가 되지 않는다.

cabal build all

대신 아래처럼 두 옵션을 추가해야 전체 빌드가 된다.

@nattybear
nattybear / cabal.md
Created November 15, 2024 13:56
하스켈/cabal

어떤 패키지를 GHCi에서 시험 삼아 써보고 싶을 때 다음과 같이 크게 두 가지 방법을 써왔다.

  • 시스템 전역에 설치한다.
  • 새 프로젝트를 만든다.

그런데 다음과 같이 입력하면 전역에 설치할 필요도 없고 새 프로젝트를 만들지 않고 패키지를 써볼 수 있다.[^1]

cabal repl --build-depends aeson
@nattybear
nattybear / book.txt
Last active May 19, 2024 02:54
독서 기록
제목 / 작가 / 삽화가 / 번역가 / 출판사 / 기간
올리버 트위스트 / 찰스 디킨스 / / 이정은 / 동쪽나라 / 2024년 5월 17일 ~ 2024년 5월 18일
마틸다 / 로알드 달 / 퀸틴 블레이크 / 김난령 / 시공주니어 / 2024년 5월 ~ 2024년 5월 19일
나니아 연대기
파운데이션
@nattybear
nattybear / quickcheck.md
Last active November 13, 2023 06:49
퀵체크(QuickCheck): 하스켈 자동 점검 도구 번역

원문 : QuickCheck: An Automatic Testing Tool for Haskell

퀵체크(QuickCheck)란 무엇인가?

퀵체크는 하스켈 프로그램을 자동으로 점검하는 도구이다. 개발자가 프로그램의 명세(specification) 를 입력하면 퀵체크는 무작위로 만들어진 수많은 경우에서 함수가 만족해야 하는 속성(property)이 유지되는지 점검한다. 명세는 퀵체크 라이브러리에 정의되어 있는 콤비네이터(combinator)를 이용해서 하스켈 문법으로 적는다. 퀵체크는 속성을 정의하고, 점검 데이터의 분포를 관찰하고, 점검 데이터 생성기를 정의할 수 있는 콤비네이터를 제공한다.

왜 퀵체크를 사용해야 하나?

간단한 예제

print("Hello World1")
module Robot where
import Control.Concurrent.MVar
import Control.Monad.State
import System.Random.Stateful
type Robot = MVar String
type RunState = [String]
initialState :: RunState
Red [Needs: 'View]
view [
title "Replace Hex Data"
button "Binary Data" [
file: request-file
t1/text: form file
]
t1: text 400
return
button "Hex Table" [
@nattybear
nattybear / main.py
Created September 22, 2022 11:38
백준 캡틴 이다솜
def cycleA(x):
n = 2
while True:
yield x
x = x + n
n += 1
def cycleB(x):
ys = cycleA(1)
next(ys)