basic korean grammar

This commit is contained in:
2026-02-12 15:35:26 -07:00
parent 000dfc756c
commit 23af7c0ea6
3 changed files with 30 additions and 23 deletions

View File

@@ -32,7 +32,8 @@ equivalents."
(defun hangul-convert-buffer-to-jamo ()
(interactive)
(hangul-convert-region-to-jamo (point-min) (point-max)))
(hangul-convert-region-to-jamo (point-min) (point-max))
(message "Converted Hangul Syllables in buffer to Jamo."))
(require 'dash)

View File

@@ -9,13 +9,13 @@ resource HangulJamo = open Prelude in {
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 + #i => init + "" ;
init + #u => init + "ᅯ" ;
init + #ha => init + "해" ;
_ => stem + "어"
} ;

View File

@@ -26,9 +26,9 @@ concrete MicroLangKor of MicroLang = open MicroResKor, Prelude in {
Adv = {s : Str} ;
lin
UttS s = s ;
UttS s = {s = s.s} ;
UttNP np = {s = np.s} ;
-- PredVPS np vp = {s = np.s ++ vp.compl ++ vp.verb.s} ;
PredVPS np vp = {s = np.s ++ vp.compl ++ vp.verb.s ! VPresent} ;
UseV v = {verb = v ; compl = []} ;
ComplV2 v2 np = {verb = v2 ; compl = np.s};
UseN n = n ;
@@ -72,21 +72,21 @@ lin child_N = mkN "어린이" ;
-- lin clever_A = mkA "똑똑한" ;
-- lin cloud_N = mkN "cloud" ;
-- lin cold_A = mkA "차가운" ;
lin come_V = regVerb "오다" ;
lin come_V = mkV "오다" ;
lin computer_N = mkN "컴퓨터" ;
-- lin cow_N = mkN "cow" ;
-- lin dirty_A = mkA "더러운" ;
lin dog_N = mkN "개" ;
-- lin drink_V2 = mkV2 (mkV "drink" "drank" "drunk") ;
-- lin eat_V2 = mkV2 (mkV "eat" "ate" "eaten") ;
-- lin find_V2 = mkV2 (mkV "find" "found" "found") ;
lin drink_V2 = mkV2 "마시다" ;
lin eat_V2 = mkV2 "먹다" ;
lin find_V2 = mkV2 "찾다" ;
-- lin fire_N = mkN "fire" ;
lin fish_N = mkN "생선" ;
-- lin flower_N = mkN "flower" ;
lin friend_N = mkN "진구" ;
lin girl_N = mkN "소녀" ;
-- lin good_A = mkA "좋은" ;
-- lin go_V = mkV "go" "went" "gone" ;
lin go_V = mkV "가다" ;
-- lin grammar_N = mkN "grammar" ;
-- lin green_A = mkA "green" ;
-- lin heavy_A = mkA "heavy" ;
@@ -95,8 +95,8 @@ lin girl_N = mkN "소녀" ;
lin house_N = mkN "집" ;
-- lin john_PN = mkPN "John" ;
-- lin jump_V = mkV "jump" ;
-- lin kill_V2 = mkV2 "kill" ;
-- lin know_VS = mkVS (mkV "know" "knew" "known") ;
lin kill_V2 = mkV2 "죽다" ;
-- lin know_V2 = mkV "알다" ;
lin language_N = mkN "언어" ;
-- lin live_V = mkV "live" ;
-- lin love_V2 = mkV2 (mkV "love") ;
@@ -104,29 +104,29 @@ lin man_N = mkN "남자" ;
lin milk_N = mkN "우유" ;
lin music_N = mkN "음악" ;
-- lin new_A = mkA "new" ;
-- lin now_Adv = mkAdv "지금" ;
lin now_Adv = mkAdv "지금" ;
-- lin old_A = mkA "낡안" ;
-- lin paris_PN = mkPN "Paris" ;
-- lin play_V = mkV "놀" ;
-- lin read_V2 = mkV2 (mkV "read" "read" "read") ;
lin play_V = mkV "놀다" ;
lin read_V2 = mkV2 "읽다" ;
-- lin ready_A = mkA "ready" ;
-- lin red_A = mkA "red" ;
lin river_N = mkN "river" ;
lin river_N = mkN "강" ;
-- lin run_V = mkV "run" "ran" "run" ;
lin sea_N = mkN "바다" ;
-- lin see_V2 = mkV2 (mkV "see" "saw" "seen") ;
-- lin ship_N = mkN "ship" ;
-- lin sleep_V = regVerb "자다" ;
lin sleep_V = mkV "자다" ;
-- lin small_A = mkA "작은" ;
lin star_N = mkN "별" ;
-- lin swim_V = mkV "swim" "swam" "swum" ;
-- lin teach_V2 = mkV2 (mkV "teach" "taught" "taught") ;
lin swim_V = mkV "수영하다" ;
lin teach_V2 = mkV2 "가르치다" ;
-- lin train_N = mkN "train" ;
-- lin travel_V = mkV "travel" ;
-- lin tree_N = mkN "tree" ;
-- lin understand_V2 = mkV2 (mkV "understand" "understood" "understood") ;
-- lin wait_V2 = mkV2 "wait" "for" ;
-- lin walk_V = mkV "walk" ;
lin wait_V2 = mkV2 "기다리다" ;
lin walk_V = mkV "걷다" ;
-- lin warm_A = mkA "따뜻한" ;
lin water_N = mkN "물" ;
-- lin white_A = mkA "하얗은" ;
@@ -143,8 +143,14 @@ oper
mkN : Str -> Noun
= \s -> lin N {s = s} ;
-- mkA : Str -> A
-- = \stem -> lin A (mkV stem) ;
mkV : Str -> V = \lemma -> lin V (regVerb lemma) ;
mkV2 = overload {
mkV2 : Str -> V2
= \lemma -> lin V2 (mkV lemma) ;
mkV2 : V -> V2
= \v -> lin V2 v ;
} ;
mkAdv : Str -> Adv
= \s -> lin Adv {s = s} ;