Skip to content

Instantly share code, notes, and snippets.

@philoskim
Last active November 1, 2018 04:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save philoskim/f4ab7ae21b5bf76def85ad61855fb9bf to your computer and use it in GitHub Desktop.
Save philoskim/f4ab7ae21b5bf76def85ad61855fb9bf to your computer and use it in GitHub Desktop.
Clojure blog

Clojure Blog

1. reify의 발음

Clojure에 reify라는 함수가 있다. 이 단어는 '구체화 시키다', '실체화하다’라는 의미인데, 문제는 이 단어를 정확하게 발음하는 사람들이 의외로 드물다는데 있다. 이 단어의 정확한 발음은 [rí:əfài] (리어파이) 이다. 이 단어의 어원을 알면 정확한 발음을 하는데 도움이 되므로, 다음에 어원을 함께 소개한다.

이 단어의 어원은, reify의 re는 우리가 흔히 again이나 back의 의미로 알고 있는 영어의 접두사 re-가 아니다. 여기서의 re는 접두사(prefix)가 아닌 어근(root) re이고, 이때의 의미는 thing(사물, 물건)이다. -ify는 '--하게 만든다’는 to make의 의미이므로, '보고 만질 수 있는 실제의 물건으로 만들다’라는 뜻이 원래의 의미이다.

우리가 잘 알고 있는 단어인 real (re: 사물, -al: 형용사 어미)이 바로 어근 re가 사용된 대표적인 단어인데, '보고 만질 수 있는 실제 물건의’라는 뜻에서 '진짜의’라는 뜻이 된 것이다.

공화국이라는 뜻의 republic (re: thing, public: of people)이라는 단어도, 국가는 왕이나 귀족의 것이 아닌, 대중의 것 또는 국민의 것이라는 의미에서 나온 것이다. 단어 자체에서도 민주적인 느낌이 물씬 풍기고 있음을 확인할 수 있다. (참고: 유럽어들 중에서 프랑스어나 스페인어, 이탈리아어 등이 속하는 남부 유럽어 계열(= 로망스(Romance) 언어 계열)에서는 수식하는 형용사가 한 단어이든, 여러 단어이든 모두 명사의 뒤에서 수식한다. 그래서 republic은 원래 라틴어 res publica이라는 두 단어 표현이 영어에서는 지금의 공화국이라는 하나의 단어가 되었다.)

2. nil punning

인터넷에서 Clojure 관련 글을 읽다 보면, nil punning이라는 말을 이따금씩 접하게 된다. 여기서 punning의 의미를 사전에서 찾아 보면 '동음 이의어를 이용한 말장난’이라고 소개하고 있다. 그러면 nil punning을 'nil 말장난’이라고 번역해야 할까? 곧이 곧대로 직역하면 아무래도 이상하다.

2.1. punning

먼저 punning이 무엇인지 예를 통해 알아보자.

<예 1>
의사와 여자가 식사를 하는 중에 아름다운 음악이 흘러 나왔다.

곡명이 궁금한 의사는 웨이터를 불렀다.

“이봐요, 웨이터. 지금 이게 무슨 곡입니까?”

곧 웨이터는 정중하게 대답했다.

“소고기입니다.”
<예 2>
교수와 변소의 세 가지 공통점을 소개합니다.

-----------------------------------
     교수            변소
-----------------------------------
학문에 힘쓴다.     항문에 힘쓴다.

학문을 넓힌다.     항문을 넓힌다.

학문을 닦는다.     항문을 닦는다.
------------------------------------

punning이란 위와 같이 동음 이의어를 이용한 말장난 또는 우스개 소리를 의미한다. 이때 발음이 반드시 동일할 필요는 없고 비슷해도 된다.

2.2. nil punning

nil punning의 정확한 번역은 'nil의 다의성(多義性)' 또는 'nil의 다양한 용법' 정도가 적당해 보인다.

Clojure에서 nil은 다음과 같이 다양한 의미로 사용되기 때문이다.

2.2.1. boolean false

nil이 조건식에 놓이면 false의 값을 갖는다.

(if nil "true-part" "false-part")   ; => "false-part"

2.2.2. nothing

nil은 '아무 값도 없음’을 의미하기도 한다.

(first [])   ; => nil

2.2.3. value

nil은 그 자체로 값으로 사용되기도 한다. 그래서 map의 key/value의 자리에 놓일 수 있다.

(def m {:a nil
        nil 100})

(m :a)    ; => nil
(m nil)   ; => 100
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment