文章摘要
Kip是一种实验性编程语言,基于土耳其语的语法格设计,将土耳其语的名词格和元音和谐融入类型系统。该项目旨在探索语言学与类型理论的交叉领域,并非生产级语言。提供土耳其语和英语教程,语法和功能可能随时变更。示例程序展示了如何用Kip打印斐波那契数列。
文章总结
Kip编程语言简介
Kip(土耳其语意为"语法语气")是一款实验性编程语言,其特色在于将土耳其语语法格融入类型系统。该项目旨在探索语言学与类型理论的交叉领域,属于研究/教育性质,并非生产级编程语言。
核心特性
土耳其语法格作为类型
语言采用土耳其语名词格(如主格、宾格、与格等)来标记函数参数关系,例如:- 宾格:
sayıyı(数字+宾格后缀) - 与格:
sayıya(数字+与格后缀)
- 宾格:
灵活的参数顺序
由于语法格已明确参数关系,以下两种调用等效:kip (5'le 3'ün farkını) yaz. (3'ün 5'le farkını) yaz.代数数据类型
支持用土耳其语法定义数据类型:kip Bir doğal-sayı ya sıfır ya da bir doğal-sayının ardılı olabilir.模式匹配
使用条件后缀-sa/-se进行模式匹配:kip (bu doğruluğun) tersi, bu doğruysa, yanlış, yanlışsa, doğrudur.
开发环境
- 依赖工具:需安装Foma(有限状态形态学工具包)和Haskell Stack
- 运行方式:
bash # 启动REPL stack exec kip # 执行文件 stack exec kip -- --exec 文件路径.kip
示例程序
kip
(* 计算前n个斐波那契数 *)
(bu tam-sayıyı) (şu tam-sayıyı) (o tam-sayıyı) işlemek,
(onla 0'ın eşitliği) doğruysa,
durmaktır,
yanlışsa,
bunu yazıp,
şunu (bunla şunun toplamını) (onla 1'in farkını) işlemektir.
项目结构
主要模块包括:
- AST.hs:抽象语法树
- TypeCheck.hs:语法格验证的类型检查器
- Foma.hs:通过FFI绑定土耳其语形态分析器TRmorph
注意事项
- 实验性项目,语法可能变更
- 提供土耳其语和英语教程
- 浏览器版Playground可通过WASM运行
该项目通过自然语言形态学(特别是土耳其语名词格和元音和谐)探索编程语言设计的新范式。
(注:原文中关于字节码缓存、测试目录结构等次要技术细节已精简,保留核心语言特性和关键使用信息)
评论总结
评论内容总结:
- 对土耳其语特性的赞赏
- 认为土耳其语的格系统使其适合这种编程语言设计 "Haha I can read some casual Turkish and this made my day!" "Funny how the case system of Turkish is both strong and standardized enough for this to work well."
- 对项目实用性的讨论
- 开发者分享项目进展和在线体验地址 "here's the browser-based playground we have so far" "The work on JavaScript transpilation just started today"
- 与其他语言的比较
- 提到类似项目如Perligata和Logos lang "Reminds me a bit of Lingua::Romana::Perligata." "Check out Logos lang, would love to chat sometime"
- 对语言设计的疑问
- 质疑与现有记录类型的区别 "I'm having a hard time seeing how this is much different from record types" "you're limited to only eight fixed record field names"
- 个人项目分享
- 多位用户分享自己的类似项目 "I also experimented on a similar idea a few years ago" "doing something similar at https://logicaffeine.com/studio"
- 对非英语编程语言的兴趣
- 表达对这类创新语言设计的喜爱 "I love this kind of stuff - non-English programming languages" "love when the 'language' part of programming languages doesn't get left behind"
- 幽默评论
- 调侃LLM可能难以处理这种语言 "A language an LLM can choke on!"
注:所有评论均无评分显示,因此无法评估认可度。总结保持了不同观点的平衡,并保留了关键引用。