평범한 한글은 많이 써보고 익혀야만 눈과 손에 익숙해 지는 언어다.
처음에는 암호 같은 한글의 자모들의이 어떤 의미인지를 알게 되면 이들이 하나의 '말'로 보이기 시작한다.
구현체 실행 주소: https://dragonteros.github.io/unsuspected-hangeul/pbhhg.html
https://dragonteros.github.io/unsuspected-hangeul/pbhhg.html
실수 하나(여기서는 3
)를 받아서 두 번 더하는 함수
함수 객체 하나를 받아서 두 번 더하는 함수
함수는 한 개의 객체만을 넘긴다.
ㄹ ㅁ ㅎ
ㄱㅇㄱ ㅎㄱ ㄱㅇㄱ ㅎㄱ ㄷㅎㄷ ㅎ ㅎㄴ
입력 값에 1을 더해서 반환하는 함수
화면에 0을 출력하는 코드
ㄱ ㅁㅈㅎㄴ ㄱㅅㅎㄴ
ㄱㅇㄱ ㅈㄹㅎㄴ ㅎ
ㄱㄹㅎㄷ
두 개의 숫자를 입력받아 첫 번째 수를 두 번째 수로 거듭제곱하여 출력하는 코드
((ㄹ ㅎㄱ, ㄱ ㅇㄱ ㅅㅅ ㅎㄴ ㄱㅅ ㅎㄴ ㅎ) ㄱㄹ ㅎㄷ)
(ㄱ ㅇㄱ ㄱ ㅇㄱ (ㄱ ㅇㄱ ㄴ ㅇㄱ ㅅ ㅎㄷ)) ㅁㅈ ㅎㄴ ㅈㄹ ㅎㄴ ㅎ ㄱㄹ ㅎㄹ ㅎ ㅎㄴ
0을 입력할 때 까지 입력받은 모든 실수를 더하는 코드
ㄱ
[
(ㄹㅎㄱ ㄱㅇㄱ ㅅㅅㅎㄴ ㄱㅅㅎㄴㅎ ㄱㄹㅎㄷ)
{
(ㄱㅇㄴ ㄱㅅㅎㄴ) (ㄱㅇㄴ ㄱㅇㄱ ㄷㅎㄷ ㄴㅇㅎㄴ) (ㄱㅇㄱ ㄱ ㄴㅎㄷ) ㅎㄷ ㅎ
} ㄱㄹㅎㄷ ㅎ
] ㅎㄴ
0에서 8까지 출력하는 코드
https://github.com/dragonteros/unsuspected-hangeul/issues/10
[ def print_and_call_this_again (x): # Number -> IO
{ㄱㅇㄱ ㅁㅈㅎㄴ ㅈㅀㄴ} # Print(x)
{ def recursion_caller (unused): # Nil -> IO
(ㅂㄱㅎㄱ ㄳㅎㄴ) # return Wrap(Nil())
(ㄱㅇㄴ ㄴ ㄷㅎㄷ ㄴㅇㅎㄴ) # return print_and_call_this_again(x+1)
(ㄱㅇㄴ ㄱㄴㄱ ㄴㅎㄷ) ㅎㄷ # if x == 8 ... else ...
ㅎ}
ㄱㅀㄷ # return Bind(Print(x), recursion_caller)
ㅎ]
ㅎㄴ # returns an IO Object
... in JS
function Print (x) {
return new Promise(function (resolve, reject) {
console.log(x)
resolve(null)
})
}
function Wrap (x) {
return Promise.resolve(x)
}
function print_and_call_this_again (x) {
function recursion_caller(_) {
return (x == 8) ? Wrap(null) : print_and_call_this_again(x+1)
}
return Print(x).then(recursion_caller)
}
print_and_call_this_again(0)