Why should ASCII have all the fun? :)

Puzzlet Chung

last modified: 2016-01-31

Aheui(아희) is the first esoteric programming language ever to be designed for the Hangul (Hangeul) . The aim of the language is to reflect the graphical design of Hangul.

“Aheul”

“아희”(“aheui”) is an archaic term for “child” or “youngster”, mainly found as an idiom “아희야”(“aheui-ya”, coincidently mathches with “Oh, boy! in 15th-to-18th-century Korean poetry called sijo. IPA notation for pronunciation of “aheui” is /ɑ.hɨj/(X-SAMPA /A.h1j/), or /ɑ.hɰi/(/A.hM\i/). However, since English language has no exact equivalent sounds of /ɨ/ and /ɰ/, it is acceptable to call it “AH-hi”/ɑ.hi/.

Structure of Hangul

Also known as “Korean alphabet”, Hangul is truly an alphabetic system, in which each symbol represents separate phoneme, or sound.

아희

Every Hangul letter has a structure, that is, a constant is juxtaposed or surrounded by a vowel. You can recognize vowel symbols easily, as they are bar-shaped, often with an attached little rod or two. All of Hangul vowel symbols are following:

ㅏㅓㅗㅜㅡㅣ
ㅑㅕㅛㅠㅢ

ㅘㅚ ㅐㅙ
ㅝㅟ ㅔㅞ

Aheui recognizes last eight complex vowels no more than ornamental symbols; you just can ignore them.

Lecturing on which-symbol-stands-for-which-sound is too far from the purpose of this document. However, it is notable that similar-looking symbols represent similar sound, as all consonants can be classified into five groups:

ㄱㅋ
ㄴㄷㅌㄹ
ㅁㅂㅍ
ㅅㅈㅊ
ㅇㅎ

These consonants can also be placed under each letter, as well as on the top of the character surrounded by a vowel. The consonant on the top is called the “initial” consonant while on the bottom is the “final” consonant.

안흼

In Aheui, functions of consonants and vowels are different each other.

Aheui specification

WARNING: This spec is incomplete and subject to change.

Typical code of Aheui is a two-dimensional space of Hangul characters, where each character is a command. In there cursor is moving around to execute the character which is under the cursor, similar to the intruction pointer of befunge.

The vowels decide the direction of the cursor. The consonants decide instructions to process. Initial consonants are the types of instructions and final consonants are the operands of the instructions.

Aheui uses multiple storages. Most of them are stacks, but there also is a queue and a stack-like protocol for extensions.

Code

Vowels: the Directions

Each vowels works like below:

Consonants: the Instructions

The ㅇ group: final consonants will be ignored.

Hence “아희” itself is the code, which would be a null program.

The ㄷ group: arithmatic. Final consonants will be ignored.

The ㅁ group: storage

For ㅂ instruction without ㅇ or ㅎ final consonant, the storage receive the number of line segments of the final consonant. See below:

2 2 3 5 4 4 2 3 4 3 4

In Korean language, following “consonant clusters” are also valid as placed in the final. They are also used in Aheui usefully for higher number, if you can remember which one is valid:

4 4 5 5 7 9 9 7 9 9 8 6 4

ㅂ instruction with no final consonant pushes zero. There is no way to push 1 explicitly, but it is possible by simple arithmatic, such as 반반나(2/2), 밤받타(4-3).

The ㅅ group: miscellaneous

Storages

Example

This code prints “Hello, world!”

밤밣따빠밣밟따뿌
빠맣파빨받밤뚜뭏
돋밬탕빠맣붏두붇
볻뫃박발뚷투뭏붖
뫃도뫃희멓뭏뭏붘
뫃봌토범더벌뿌뚜
뽑뽀멓멓더벓뻐뚠
뽀덩벐멓뻐덕더벅

Acknowledgement

I would like to thank Seong-hoon “Tokigun” Kang who helped me a lot working with the specification.