Racket Libraries
5.1 
5.2 双和􏿴
5.3 􏻿
5.4 􏿰
5.5 
5.6 勺
5.7 
5.8 
5.9 􏺃
5.10 Conditionals
5.11 
5.12 
5.13 未分类
On this page:
5.3.1 例程命名规则
5.3.2 􏻿,􏻽、􏻼,􏻿?,􏻽?、􏻼?,􏻸?
5.3.3 􏻺、􏻻,􏻹
5.3.4 􏻿巨,􏻿弔,􏻿𠆯、􏻿􏽒
5.3.5 􏻼化,􏻿化􏿴、􏿴化􏻿、􏻿􏾝化􏸼
5.3.6 􏻿􏾺、􏻿􏷵、􏻿􏾺分、􏻿􏾝
5.3.7 􏻿弓,􏻿佫、􏻿挌,􏻿􏹈,􏻿􏹇
5.3.8 􏻿􏾩,􏻿􏾩+  ,􏻺𰅡,􏻿􏾩/  以􏾝
5.3.9 基础例程
􏻿
􏻿?
􏻺
􏻼
􏻿巨
􏻿弔
􏻿􏾩
􏻿化􏿴
􏿴化􏻿
􏻼化
􏻺𰅡
􏻿􏾩/  以􏾝
􏻿􏾝化􏸼
􏻻
5.3.10 额外例程
􏻸?
􏻿􏾩+
􏻿佫
􏻿挌
􏻹
􏻿􏾺
􏻿𨚞
􏻿􏷵
􏻿􏷴
􏻿􏾺分
􏻿𨚞分
􏻿􏾝
􏻿􏹈
􏻿􏹇
􏻿􏹈巨
􏻿佫之􏺗
􏻿佫之􏺘
􏻿弓
􏻿弓/  􏾗
􏻿弓/  􏾃
􏻿𠆯
􏻿􏽒
8.12

5.3 􏻿🔗

另见名扩展库:􏻿

“􏻿”(vector)是类似于“双和􏿴”的一种数据结构,通常被称为“数组”。

5.3.1 例程命名规则🔗

Naming Rules,有:

规则

含义

进出参

举例

􏻿/中任一者的

指示内容是否可变

是不可或可被增加、删除或修改的

􏻼?􏻽?

􏻿加偏旁

构造生成特殊元素组成的􏻿

出参数据结构是􏻿

􏻺􏻻􏻹

左偏旁

相似集(类型相同且元素相似)

出参数据与进参数据相比,类型相同且内容类似

􏻿𠆯

偏旁

指示修改方式

直接修改了原始数据

􏻿􏾩􏻿􏽒􏻿挌

􏻿起头

指示入参

入参数据是􏻿类数据

􏻿巨􏻿弔􏻿𠆯

结尾

类型转换

出参数据内容不变而类型作小幅度改变

􏻼化

联结

类型转换

出参数据内容不变而类型改变

􏻿化􏿴􏿴化􏻿

+结尾

入参

入参数据以相同方式多次出现

􏻿􏾩+

5.3.2 􏻿,􏻽、􏻼,􏻿?,􏻽?、􏻼?,􏻸?🔗


􏻿为新造字
􏻽为新造字
􏻼为新造字
􏻸为新造字
  • :“矢量(vector)”的意思,呈现为半包围结构,表示该数据结构与􏿴类似;

  • :本意是“十个元素”,在这里引申为“元素长度是固定的”之意;

  • :稳定的、内容不变的(因“山”是稳定的,见:固?);

  • :易动的、内容可变的(因为“水”是易变的,见:易?);

  • :简写,通

参见:固?易?

相比于􏿴,在以下场景下使用􏻿会更具效率优势:元素长度确定、需要频繁获取或修改元素而不需要增加或移除元素。
另外,“􏻿”按内容是否可以被修改,可以被分为:“易􏻿”和“固􏻿”,简写为“􏻽”和“􏻼”,“􏻽”为默认值。

Examples:
> (􏻿 1 2 3 4)

'#(1 2 3 4)

> (􏻽? (􏻿 1 2 3 4))

#t

> (􏻼 1 2 3 4)

'#(1 2 3 4)

> (􏻼? (􏻼 1 2 3 4))

#t

> (􏻼? '#(1 2 3 4))

#t

> (􏻿? (􏻿 1 2 3 4))

#t

> (􏻿? (􏻼 1 2 3 4))

#t

> (􏻸? (􏻿))

#t

> (􏻸? #())

#t

5.3.3 􏻺、􏻻,􏻹🔗


参见:􏼓􏼎􏿝

Examples:
> (􏻺 5 'foo)

'#(foo foo foo foo foo)

> (􏻻 5 􏽊)

'#(1 2 3 4 5)

> (􏻹 '#(1) '#(2) '#(3) '#(4))

'#(1 2 3 4)

5.3.4 􏻿巨,􏻿弔,􏻿𠆯、􏻿􏽒🔗


参见:𠆯

Examples:
> (􏻿巨 '#(1 2 3 4))

4

> (􏻿弔 '#(a b c d) 2)

'c

> (􏻿𠆯 '#(1 222 35 4) <)

'#(1 4 35 222)

> (􏻿􏽒 (􏻿 1 222 35 4) <)

5.3.5 􏻼化,􏻿化􏿴、􏿴化􏻿、􏻿􏾝化􏸼🔗


参见:􏻼􏻿􏾝

Examples:
> (􏻼化 '#(a b c d))

'#(a b c d)

> (􏿴化􏻿 '(a b c d))

'#(a b c d)

> (􏻿化􏿴 '#(a b c d))

'(a b c d)

> (􏻿􏾝化􏸼 '#(a b c d) 0 2)

'a

'b

5.3.6 􏻿􏾺、􏻿􏷵、􏻿􏾺分、􏻿􏾝🔗


参见:􏾺􏾺分􏾝

Examples:
> (􏻿􏾺 '#(a b c d e f) 2)

'#(a b)

> (􏻿􏷵 '#(a b c d e f) 2)

'#(c d e f)

> (􏻿􏾺分 '#(a b c d e f) 2)

'#(a b)

'#(c d e f)

> (􏻿􏾝 '#(a b c d e f) 0 2)

'#(a b)

5.3.7 􏻿弓,􏻿佫、􏻿挌,􏻿􏹈,􏻿􏹇🔗


参见:􏹇

Examples:
> (􏻿弓 'c '#(a b 1 c 2 d 3 e))

3

> (􏻿佫 􏽊 '#(1 2 3 4))

'#(2 3 4 5)

> (􏻿􏹈 􏻛? '#(1 2 -3 4))

'#(1 2 4)

> (􏻿􏹇 􏻛? '#(1 2 -3 4))

'#(-3)

> ( vec (􏻿 1 2 3 4))
> (􏻿挌 􏽊 vec)

'#(2 3 4 5)

> vec

'#(2 3 4 5)

5.3.8 􏻿􏾩,􏻿􏾩+,􏻺𰅡,􏻿􏾩/以􏾝🔗


参见:􏾝

另见:􏻿􏾝

Examples:
> ( vec (􏻿 'a 'b 'c 'd))
> vec

'#(a b c d)

> (􏻿􏾩 vec 1 'x)
> vec

'#(a x c d)

> (􏻿􏾩+ vec 1 'y 2 'y)
> vec

'#(a y y d)

> (􏻺𰅡 vec 'z)
> vec

'#(z z z z)

> (􏻿􏾩/以􏾝 vec 0 '#(aa bb cc dd) 1 3)
> vec

'#(bb cc z z)

5.3.9 基础例程🔗

汉字化

􏻿 : 􏻽 【MORE】 = vector

汉字化

􏻿? : 是否是􏻿 【MORE】 = vector?

汉字化

􏻺 : 构造构造内容是若干而相同元素的􏻿 【MORE】 = make-vector

汉字化

􏻼 : 构造内容不能被修改的数组 【MORE】 = vector-immutable

汉字化

􏻿巨 : 返回􏻿的长度 【MORE】 = vector-length

汉字化

􏻿弔 : 返回􏻿的某索引处的元素 【MORE】 = vector-ref

汉字化

􏻿􏾩 : 直接修改原数组中某索引处的元素为新值 【MORE】 = vector-set!

汉字化

􏻿化􏿴 : 􏻿数据转化为􏻿 【MORE】 = vector->list

汉字化

􏿴化􏻿 : 􏻿数据转化为􏻿 【MORE】 = list->vector

汉字化

􏻼化 : 􏻽数据转化为􏻼数据 【MORE】 = vector->immutable-vector

汉字化

􏻺𰅡 : 直接修改􏻿数据使其转化成复􏻿数据 【MORE】 = vector-fill!

汉字化

􏻿􏾩/以􏾝 : 从本􏻿的第N处索引的数值开始做修改(以另一个􏻿的􏻿􏾝为内容) 【MORE】 = vector-copy!

汉字化

􏻿􏾝化􏸼 : 􏻿数据转化为􏸼数据 【MORE】 = vector->values

汉字化

􏻻 : 构造内容是一系列序数的􏻿 【MORE】 = build-vector

5.3.10 额外例程🔗

汉字化

􏻸? : 􏻿是否是空 【MORE】 = vector-empty?

汉字化

􏻿􏾩+ : 【MORE】 = vector-set*!

汉字化

􏻿佫 : 【MORE】 = vector-map

汉字化

􏻿挌 : 【MORE】 = vector-map!

汉字化

􏻹 : 【MORE】 = vector-append

汉字化

􏻿􏾺 : 【MORE】 = vector-take

汉字化

􏻿𨚞 : 【MORE】 = vector-take-right

汉字化

􏻿􏷵 : 【MORE】 = vector-drop

汉字化

􏻿􏷴 : 【MORE】 = vector-drop-right

汉字化

􏻿􏾺分 : 【MORE】 = vector-split-at

汉字化

􏻿𨚞分 : 【MORE】 = vector-split-at-right

汉字化

􏻿􏾝 : 【MORE】 = vector-copy

汉字化

􏻿􏹈 : 【MORE】 = vector-filter

汉字化

􏻿􏹇 : 【MORE】 = vector-filter-not

汉字化

􏻿􏹈巨 : 【MORE】 = vector-count

汉字化

􏻿佫之􏺗 : 【MORE】 = vector-argmin

汉字化

􏻿佫之􏺘 : 【MORE】 = vector-argmax

汉字化

􏻿弓 : 【MORE】 = vector-member

汉字化

􏻿弓/􏾗 : 【MORE】 = vector-memv

汉字化

􏻿弓/􏾃 : 【MORE】 = vector-memq

汉字化

􏻿𠆯 : 【MORE】 = vector-sort

汉字化

􏻿􏽒 : 【MORE】 = vector-sort!