5.4
另见名扩展库:
5.4.1 例程命名规则
规则 | 指示 | 含义 | 举例 |
囗/古/舌/亻 + | “”中“键值对”唯一性的确立方式 | 是通过与之对应的同?/?/?/侗?中的任一者所确立的 | |
山/氵 + | “”中“键值对”是否可变 | 是不可或可被增加、删除或修改的 | |
⺮/艹 + | “”中“键值对”之“键”的存储方式 | 是刚性或柔性的 | |
亻 | 相似集(类型相同且元素相似) | 出参数据与进参数据相比,类型相同且内容类似 | |
阝 | 连续集(类型相同且元素连续相同) | 出参数据与进参数据相比,类型相同且前者是后者的一部分 | |
刂 | 缺失集(删除、移走、去掉部分元素之后的集合) | 出参数据与进参数据相比,类型相同且前者是后者的子集 | |
扌/!结尾 | 修改警示 | 会直接修改原始数据而非另造新数据作输出 | |
^结尾 | 入参 | 入参数据是类数据 | |
+结尾 | 入参 | 入参数据以相同方式多次出现 |
5.4.2 、、、、
为新造字、、、为新造字
囗:同的简写,见同?;
古:的简写,见?;
舌:的简写,见?;
亻:侗的简写,见侗?。
、、、、为新造字为新造字
穴:简写,通空。
另见:
- 是否可以增加、修改、删除“键值对”,即“”的内容是否可以被改变:
:内容不可改变的“”,也称“固”;
:内容可改变的“”,也称“易”(扌偏旁相关的例程或以!结尾的例程只能作用在“易”上)。
- 不能有重复的“键值对”,即“键值对”的唯一性要如何被确立(通过各个“键值对”之间“键”的相互比较来确立):
- 对于“键值对”,其“键”的存储可以是:
:刚性的;
:柔性的;
:类的。
5.4.3 ^、^、^、^,^、^、^、^,^、^、^、^,^、^、^、^,化
> (^ '((1 . 2) (3 . 4))) '#hash((1 . 2) (3 . 4))
> (? (^ '((1 . 2) (3 . 4)))) #t
> (^ '((1 . 2) (3 . 4))) '#hash((1 . 2) (3 . 4))
> (? (^ '((1 . 2) (3 . 4)))) #f
> (^ '((1 . 2) (3 . 4))) '#hashalw((1 . 2) (3 . 4))
> (? (^ '((1 . 2) (3 . 4)))) #t
> (化 ( 1 2 3 4)) '((1 . 2) (3 . 4))
> (化 ( 1 2 3 4)) '((1 . 2) (3 . 4))
> (化 ( 1 2 3 4)) '((1 . 2) (3 . 4))
5.4.4 ?,?、?、?、?,?、?、?,?
> (? ( 1 2 3 4)) #t
> (? ( 1 2 3 4)) #t
> (? ( 1 2 3 4)) #t
> (? ( 1 2 3 4)) #t
> (? ( 1 2 3 4)) #t
> (^ '((1 . 2) (3 . 4))) '#hash((1 . 2) (3 . 4))
> (? (^ '((1 . 2) (3 . 4)))) #t
> (? (^ '((1 . 2) (3 . 4)))) #t
> (? (^ '((1 . 2) (3 . 4)))) #t
> (? (^ '((1 . 2) (3 . 4)))) #t
> (? (^ '((1 . 2) (3 . 4)))) #f
> (? (^ '((1 . 2) (3 . 4)))) #t
> (? ( 'a "aa" 'b "bb")) #f
> (? ()) #t
5.4.5 、,日?
5.4.6 弔、𫼛,,、
> (弔 ( 'a "apple" 'b "banana") 'b) "banana"
> (弔 ( 'a "apple" 'b "banana") 'b "cat") "banana"
> (弔 ( 'a "apple" 'b "banana") 'c "cat") "cat"
> ( ( 'a "apple" 'b "banana") 'b) 'b
> ( ( 'a "apple" 'b "banana") 'b "cat") 'b
> ( ( 'a "apple" 'b "banana") 'c "cat") "cat"
> ( ( 'a "apple" 'b "banana") 'a) '#hash((b . "banana"))
> (名 h ( 'a "apple" 'b "banana")) > (𫼛 h 'b "cat") "banana"
> h '#hash((a . "apple") (b . "banana"))
> (𫼛 h 'c "cat") "cat"
> h '#hash((a . "apple") (b . "banana") (c . "cat"))
> ( h 'a) > h '#hash((b . "banana") (c . "cat"))
5.4.7 攸、攸+,、+,攸/入、/入
参见:攸
> (攸 ( 'a "apple" 'b "banana") 'b "ba") '#hash((a . "apple") (b . "ba"))
> (攸+ ( 'a "apple" 'b "banana") 'a "ap" 'b "ba") '#hash((a . "ap") (b . "ba"))
> (攸/入 ( 'a "apple" 'b "banana" 'c 1) 'c ) '#hash((a . "apple") (b . "banana") (c . 2))
> (名 h ( 'a "apple" 'b "banana")) > (+ h 'a "ap" 'b "ba") > h '#hash((a . "ap") (b . "ba"))
5.4.8 𠛮、,𠛮
𠛮为古活字
刂:删除;
5.4.9 各、、佫
为新造字
又:的缩写;
参见:佫
5.4.10 仔?
参见:、仔?
5.4.11 巨
参见:巨、空?
5.4.12 化
5.4.13 基础例程
(require ming/racket/base) | package: ming |
word
word
word
word
word
: elem + 是否是 + needtofix + 、 + needtofix + 、 + needtofix + 、 + needtofix + 的任一种 = hash?
word
? : elem + 是否是 + needtofix = hash-equal?
word
? : elem + 是否是 + needtofix = hash-equal-always?
word
word
word
? : elem + 类上,键是否是被刚性存储的 = hash-strong?
word
? : elem + 类上,键是否是被柔性存储的 = hash-weak?
word
? : elem + 类上,键的存储是否是采用 + needtofix = hash-ephemeron?
word
word
^ : elem + needtofix + 转换成 + needtofix = make-hashalw
word
^ : elem + needtofix + 转换成 + needtofix = make-hasheqv
word
^ : elem + needtofix + 转换成 + needtofix = make-hasheq
word
^ : elem + 如上类推 = make-immutable-hash
word
^ : elem + 如上类推 = make-immutable-hashalw
word
^ : elem + 如上类推 = make-immutable-hasheqv
word
^ : elem + 如上类推 = make-immutable-hasheq
word
^ : elem + 如上类推 = make-weak-hash
word
^ : elem + 如上类推 = make-weak-hashalw
word
^ : elem + 如上类推 = make-weak-hasheqv
word
^ : elem + 如上类推 = make-weak-hasheq
word
^ : elem + 如上类推 = make-ephemeron-hash
word
^ : elem + 如上类推 = make-ephemeron-hashalw
word
^ : elem + 如上类推 = make-ephemeron-hasheqv
word
^ : elem + 如上类推 = make-ephemeron-hasheq
word
word
word
攸/入 : = hash-update
word
word
+ : elem + 直接修改某些“键”所对应的“值” = hash-set*!
word
/入 : = hash-update!
word
弔 : elem + 以“键值对”中“阳”位数据为基准,来索引查询“键值对”并返回“阴”位数据(未找到数据则返回默认设置值);
= hash-ref
word
: elem + 以“键值对”中“阳”位数据为基准,来索引查询“键值对”并返回“阳”位数据; = hash-ref-key
word
: elem + 以“键值对”中“阳”位数据为基准,来索引查询“键值对”并返回“阴”位数据(未找到数据则直接修改原数据增加新“键值对”); = hash-ref!
word
日? : elem + 是否存在某“键” = hash-has-key?
word
: elem + 以新造数据的方式来删除某“键”和其对应的“值” = hash-remove
word
: elem + 直接删除某“键”和其对应的“值” = hash-remove!
word
𠛮 : elem + 以新造数据的方式来删除全部“键”和其对应的“值” = hash-clear
word
: elem + 直接删除全部“键”和其对应的“值” = hash-clear!
word
𠛮 : elem + 以删除全部“键”和其对应的“值”的方式新造空数据 = hash-copy-clear
word
word
佫 : elem + 把某一个例程依次作用在各个明(键值对)上 = hash-map/copy
word
word
: elem + 返回中所有键值对的“值”组成的 + needtofix = hash-values
word
化 : + 化 + = hash->list
word
仔? : elem + 前者是否是后者的 + needtofix + 的子集 = hash-keys-subset?
word
各 : + 各 = hash-for-each
word
巨 : + 巨 = hash-count
word
? : + ? = hash-empty?
word
?引 : ? + + 引 = hash-iterate-first
word
?继引 : ? + + 继 + 引 = hash-iterate-next
word
?引日 : ? + + 引 + 日 = hash-iterate-key
word
?引月 : ? + + 引 + 月 = hash-iterate-value
word
?引明 : ? + + 引 + 明 = hash-iterate-pair
word
word
5.4.14 额外例程
(require ming/racket/hash) | package: ming |