forked from GitHub/comp-syntax-gu-mlt
73 lines
2.6 KiB
Plaintext
73 lines
2.6 KiB
Plaintext
resource HangulJamo = open Prelude in {
|
|
flags coding=utf8 ;
|
|
oper
|
|
lemmaToStem : (lemma : Str) -> Str
|
|
= \lemma -> case lemma of {
|
|
stem + "다" => stem ;
|
|
_ => Predef.error ("lemmaToStem was applied to a non-lemma," ++ lemma)
|
|
} ;
|
|
|
|
infinitive : (stem : Str) -> Str
|
|
= \stem -> case stem of {
|
|
-- 하다 ⇒ 해
|
|
init + #ha => init + "해" ;
|
|
-- 찾다 ⇒ 찾아, 좁다 ⇒ 좁아
|
|
_ + #a_o + #batchim => stem + "아" ;
|
|
-- 가다 ⇒ 가,
|
|
_ + (#a | #eo) => stem ;
|
|
-- 오다 ⇒ 와
|
|
init + #o => init + "ᅪ" ;
|
|
-- 따르다 ⇒ 따러
|
|
init + #eu => init + "ᅥ" ;
|
|
-- 기다리다 ⇒ 기다려
|
|
init + #i => init + "ᅧ" ;
|
|
--
|
|
init + #u => init + "ᅯ" ;
|
|
-- 맛있다 ⇒ 맛있어
|
|
_ => stem + "어"
|
|
} ;
|
|
|
|
present_haeyo : (stem : Str) -> Str
|
|
= \stem -> infinitive stem + "요" ;
|
|
|
|
past_haeyo : (stem : Str) -> Str
|
|
= \stem -> infinitive stem + "ᆻ어요" ;
|
|
|
|
vc_allomorph : (s,vowel,consonant : Str) -> Str
|
|
= \s,v,c -> case s of {
|
|
_ + #vowel => v ;
|
|
_ => c
|
|
} ;
|
|
|
|
oper
|
|
a_o : pattern Str = #("ᅡ" | "ᅩ") ;
|
|
a : pattern Str = #"ᅡ" ;
|
|
o : pattern Str = #"ᅩ" ;
|
|
eo : pattern Str = #"ᅥ" ;
|
|
eu : pattern Str = #"ᅳ" ;
|
|
i : pattern Str = #"ᅵ" ;
|
|
u : pattern Str = #"ᅮ" ;
|
|
ha : pattern Str = #"하" ;
|
|
|
|
oper
|
|
consonant : pattern Str =
|
|
#("ᄀ" | "ᄁ" | "ᄂ" | "ᄃ" | "ᄄ" | "ᄅ" | "ᄆ" | "ᄇ"
|
|
| "ᄈ" | "ᄉ" | "ᄊ" | "ᄋ" | "ᄌ" | "ᄍ" | "ᄎ" | "ᄏ"
|
|
| "ᄐ" | "ᄑ" | "ᄒ" | "ᆨ" | "ᆩ" | "ᆪ" | "ᆫ" | "ᆬ"
|
|
| "ᆭ" | "ᆮ" | "ᆯ" | "ᆰ" | "ᆱ" | "ᆲ" | "ᆳ" | "ᆴ"
|
|
| "ᆵ" | "ᆶ" | "ᆷ" | "ᆸ" | "ᆹ" | "ᆺ" | "ᆻ" | "ᆼ"
|
|
| "ᆽ" | "ᆾ" | "ᆿ" | "ᇀ" | "ᇁ" | "ᇂ") ;
|
|
batchim : pattern Str =
|
|
#("ᆨ" | "ᆩ" | "ᆪ" | "ᆫ" | "ᆬ" | "ᆭ" | "ᆮ" | "ᆯ" | "ᆰ"
|
|
| "ᆱ" | "ᆲ" | "ᆳ" | "ᆴ" | "ᆵ" | "ᆶ" | "ᆷ" | "ᆸ" | "ᆹ"
|
|
| "ᆺ" | "ᆻ" | "ᆼ" | "ᆽ" | "ᆾ" | "ᆿ" | "ᇀ" | "ᇁ" | "ᇂ") ;
|
|
choseong : pattern Str =
|
|
#("ᄀ" | "ᄁ" | "ᄂ" | "ᄃ" | "ᄄ" | "ᄅ" | "ᄆ" | "ᄇ" | "ᄈ"
|
|
| "ᄉ" | "ᄊ" | "ᄋ" | "ᄌ" | "ᄍ" | "ᄎ" | "ᄏ" | "ᄐ" | "ᄑ"
|
|
| "ᄒ") ;
|
|
vowel : pattern Str =
|
|
#("ᅡ" | "ᅢ" | "ᅣ" | "ᅤ" | "ᅥ" | "ᅦ" | "ᅧ" | "ᅨ" | "ᅩ"
|
|
| "ᅪ" | "ᅫ" | "ᅬ" | "ᅭ" | "ᅮ" | "ᅯ" | "ᅰ" | "ᅱ" | "ᅲ"
|
|
| "ᅳ" | "ᅴ" | "ᅵ") ;
|
|
}
|