Janet
文章平均质量分 71
janet编程语言
cheniie
做狗比做人容易
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Janet】元组
Janet语言中的元组是不可变的顺序数据结构,支持方括号和圆括号两种形式。摘要:1)元组可通过[]字面量或tuple函数创建;2)可作为表的键使用;3)支持按元素顺序进行比较和排序;4)方括号元组在宏和延迟求值时特别有用;5)与普通元组在打印和相等性比较上存在差异,但功能基本相同。元组提供了与数组类似的操作函数。原创 2025-11-22 15:44:26 · 274 阅读 · 0 评论 -
【Janet】结构体
摘要:结构体是Lisp中不可变的键值对数据结构,类似表但不可变。可通过字面量或struct函数创建,内容相同的结构体视为相等。支持通过get或函数调用方式取值,但不能修改。表可通过table/to-struct转换为结构体。由于结构体基于内容判等,可用作表键,如表示坐标点并关联值。示例展示了创建结构体、取值及作为键使用的场景。原创 2025-11-21 19:29:51 · 161 阅读 · 0 评论 -
【Janet】Table
摘要:Janet中的表是一种灵活高效的关联数组数据结构,支持任意类型键值(除nil和math/nan外)。可通过字面量或table函数创建表,使用get/put/set函数操作值。表支持原型机制实现继承,并提供了丰富的操作函数如keys/values/merge等。表调用时可直接作为查找函数使用,插入nil值会删除对应键。原创 2025-11-20 21:48:59 · 219 阅读 · 0 评论 -
【Janet】Buffer
Janet语言中的缓冲区是一种可变字节序列数据结构,功能类似字符串但支持修改操作。摘要要点:1)缓冲区以@符号开头创建;2)支持通过get/put操作读写字节;3)可使用slice获取子缓冲区;4)提供多种push方法添加数据,如push-byte、push-string等。缓冲区适用于处理二进制数据、字符串拼接等场景,具有自动扩容特性,是Janet中处理字节序列的核心数据类型。原创 2025-11-18 21:11:51 · 290 阅读 · 0 评论 -
【Janet】数组
摘要:Janet中的数组是可变的序列数据类型,支持高效操作。数组通过字面量或array/new创建,支持随机访问(使用in、get)和修改(put、set)。数组可作为栈使用(array/push/pop/peek),还提供slice、map等实用函数。下标从0开始,length获取元素数量,超出范围访问会返回nil或默认值。原创 2025-11-16 16:24:08 · 422 阅读 · 0 评论 -
【Janet】数据结构
Janet语言提供了6种核心数据结构:表(table)、结构体(struct)、数组(array)、元组(tuple)、字符串(string)和缓冲区(buffer),分为可变和不可变类型。这些数据结构在访问、插入/追加和删除操作上大多具有O(1)的时间复杂度。数组、表、缓冲区是可变类型,支持修改操作;而元组、结构体、字符串是不可变类型。所有数据结构都支持get/in函数进行值访问,可变类型还支持put函数进行修改。length函数可获取所有数据结构的元素数量。该设计提供了高效的数据操作能力,同时区分了可变原创 2025-11-15 17:32:31 · 359 阅读 · 0 评论 -
【Janet】宏
本文介绍了Janet语言中的宏机制。宏是接受代码输入并输出转换后代码的程序,能够扩展语言本身的语法。文章详细讲解了如何编写宏,包括使用可变参数处理多个函数体表达式、添加文档注释、运用quasiquote优化代码可读性。同时指出了宏编写中的常见问题,如意外绑定捕获(hygiene问题),并提供了解决方案:通过gensym函数和with-syms宏生成唯一符号。文章强调尽管宏功能强大,但容易产生bug,建议优先使用函数,仅在必要时使用宏。原创 2025-11-14 19:10:04 · 717 阅读 · 0 评论 -
【Janet】循环
Janet语言提供了多种循环方式来处理常见编程任务。基础while循环可用于迭代,但更推荐使用高级宏如for和loop来实现数字范围遍历。loop宏支持:range、:in等动词和:when修饰符,比基础循环更灵活。对于数组遍历,可用each宏或map函数;对于字典遍历,可用loop配合:pairs或:keys,或使用eachk/eachp宏。Janet的next函数是核心迭代机制,支持所有可迭代类型。这些特性使Janet能简洁地处理各种迭代场景。原创 2025-11-13 18:55:22 · 275 阅读 · 0 评论 -
【Janet】字符串,关键字,符号
摘要:Janet语言支持关键字、符号和字符串三种标签类型,均可用作表和结构体的键。关键字以冒号开头,符号需要引号引用,而字符串用于文本和字节序列存储。文章详细介绍了字符串操作,包括子串提取、查找替换、分割拼接以及大小写转换等功能。所有类型都是不可变的,关键字和符号针对相等比较做了优化,是表的键的首选。字符串处理兼容ASCII和UTF-8编码,提供丰富的操作函数但不支持正则表达式。原创 2025-11-12 19:11:29 · 259 阅读 · 0 评论 -
【Janet】函数
Janet是一种函数式编程语言,支持多种函数定义方式。通过defn可以定义具名函数,fn创建匿名函数,|宏提供简洁的匿名函数语法。函数支持可选参数(&opt)、可变参数(&)和关键字参数(&keys)。作为一等公民,函数可像普通值一样传递和操作,支持嵌套调用和参数默认值设置(default)。该语言还提供了参数解构和多种调用风格转换功能,使代码更简洁灵活。原创 2025-11-11 18:44:38 · 747 阅读 · 0 评论 -
【Janet】控制流
Janet语言提供两种基本控制流原语:if表达式用于条件分支,接受2-3个参数(条件、真分支和可选的假分支);while循环用于重复执行,当条件为真时循环执行后续表达式。此外还提供了更高级的控制结构宏,如cond、case、when用于条件判断,以及loop、seq、generate等循环宏,这些宏能简化代码编写,提供类似Python和Clojure中的列表推导功能。原创 2025-11-10 20:34:16 · 232 阅读 · 0 评论 -
【Janet】绑定(def和var)
摘要:Janet语言使用def创建不可变词法作用域绑定,var创建可变绑定,set修改可变值。作用域可通过do表达式和fn闭包创建,let宏可便捷实现多绑定。def和var支持:private选项实现私有化,并可通过字符串添加文档说明。绑定的作用域规则有效组织程序结构,防止命名冲突。原创 2025-11-09 19:48:33 · 189 阅读 · 0 评论 -
【Janet】比较运算符
Janet语言提供两类比较运算符:原始比较(=, <, <=, >, >=)和多态比较(compare=, compare<等)。原始比较基于内部类型码排序,支持多参数链式比较,但对不同类型可能产生意外结果。多态比较通过compare函数实现类型感知的比较逻辑,更符合语义但性能较低。此外,deep=用于深度比较可变数据结构内容,而原始=仅判断对象同一性。开发者可根据需求选择适合的比较方式,自定义类型可通过实现:compare方法来支持多态比较。原创 2025-11-08 13:22:48 · 445 阅读 · 0 评论 -
【Janet】数字与算术运算
Janet语言支持基本算术运算和丰富的数字表示方式。算术运算采用前缀表达式,支持加减乘除、取余等操作,所有数字均为IEEE 754双精度浮点数。数字字面量可采用十进制、自定义进制(2-36进制)和科学计数法表示,支持使用下划线分隔和不同进制前缀(如0x表示十六进制)。此外,Janet还提供从C标准库借鉴的数学函数(如三角函数、对数等)和位运算功能(如bor、band等),位运算仅适用于整数处理。该语言灵活支持多种数字格式,但最终都会转换为双精度浮点数。原创 2025-11-07 19:06:47 · 235 阅读 · 0 评论 -
【Janet】特殊表达式
Janet 核心语法摘要 Janet 语言包含 13 种核心特殊语法,构成其基础功能。def 创建不可变绑定,支持解构赋值;var 创建可变绑定。函数定义使用 fn,可递归调用。do 创建代码块和词法作用域。quote 实现字面引用,if 提供条件分支。splice 解构数据结构,相当于取消引用。while 和 break 实现循环控制,后者可用于提前退出函数或循环。这些语法共同构成了 Janet 的核心功能,其中部分语法支持元数据和文档字符串。特殊语法既不是函数也不是宏,而是编译器直接处理的底层结构。原创 2025-11-06 20:15:12 · 965 阅读 · 0 评论 -
【Janet】语法与解析器
Janet 程序的生命周期始于 UTF-8/ASCII 编码的源文件,其语法类似 Lisp,采用同构设计,代码可直接表示为数据结构。核心语法包括:nil/true/false 字面量、符号(支持 Unicode)、关键字(以冒号开头)、多种数字表示法、字符串(支持转义)和长字符串(使用反引号)。数据结构支持元组、数组、结构体和表(table),分别使用圆括号/方括号、@符号和大括号表示。注释以#开头,并提供了quote/splice等语法糖。Janet解析器严格区分解析和执行阶段,通过宏而非读取器宏来扩展语原创 2025-11-05 19:29:16 · 745 阅读 · 0 评论 -
【Janet】介绍
摘要 本文档详细介绍了Janet编程语言的安装和基础使用指南。主要内容包括: 安装方式: Windows推荐下载预编译安装包 macOS可使用Homebrew安装 Linux系统需从源码编译 源码编译: 提供Unix-like系统、FreeBSD和Windows的详细编译步骤 支持Meson和最小化构建选项 入门示例: 展示了经典的"Hello World"程序 介绍了带命令行参数处理的进阶示例 解释了Janet的函数调用语法和REPL使用 核心功能: 内置300+函数和宏 提供doc宏原创 2025-11-04 21:12:42 · 1308 阅读 · 0 评论
分享