Scheme 中的 "up" 或 "down" 结构是什么?
What is an "up" or "down" structure in Scheme?
在 泛函微分几何 的早期,Sussman & Wisdom 就开始使用 "up structure"...但我一点也不知道这可能是什么。
(print-expression
((compose P2-chi R2-chi-inverse)
(up ’x0 ’y0)))
我在文本中的任何地方都找不到这个结构的描述,我在标准版本的 Scheme 或语言文档中也找不到它...所以我想知道这些 "up structure" 和"down structure" 事情是。我知道它们对应于基本微积分中的导数和积分。只是完全不知道它们是如何放在 Scheme 中的。
参见第 22 页的脚注 1:
In multiple dimensions the derivative Df(x) is a down tuple structure
of the partial derivatives and the increment ∆x is an up tuple
structure, so the indicated product is to be interpreted as a
contraction. (See equation B.8.)
在文本中扫描 up
的外观,它似乎是一个包含实际值的两位元组。在 Scheme 中,两位元组可以是一个简单的 dotted pair 使用 cons
:
(define (up x y)
(if (and (real? x)
(real? y))
(cons x y)
(error "up: argument is not a Real"))))
(define up? cons?)
(define up-x car)
(define up-y cdr)
一些方案在——例如posn
在 Racket 的学生语言中。另一方面,在 #lang racket
中我们可能会使用 struct
rather than cons
and we would protect the struct
with a contract:
#lang racket
(struct up (x y))
(provide (contract-out
(struct up ((x real?)
(y real?)))))
免责声明
我扫描这本书的印象是 up
结构包含两个 Real 数值,但我并不声称完全理解数学。因此可能需要指定更复杂的数据类型或更广泛的验证。当然,对于某些类型的程序来说,没有类型验证的原始动态类型 cons
或 list
也是一种选择。
来自scmutils
reference manual:1
We identify the Scheme vector data type with mathematical
n-dimensional vectors. These are interpreted as up tuples when a
distinction between up tuples and down tuples is made.
We inherit from Scheme the constructors VECTOR and MAKE-VECTOR, the
selectors VECTOR-LENGTH and VECTOR-REF, and zero-based indexing.
而且,我认为,数学解释是:Covariance and contravariance of vectors。
1(转到 Up Tuples 和 Down Tuples 部分并向下滚动到乘法解释,以了解它的全部内容) .
在 泛函微分几何 的早期,Sussman & Wisdom 就开始使用 "up structure"...但我一点也不知道这可能是什么。
(print-expression
((compose P2-chi R2-chi-inverse)
(up ’x0 ’y0)))
我在文本中的任何地方都找不到这个结构的描述,我在标准版本的 Scheme 或语言文档中也找不到它...所以我想知道这些 "up structure" 和"down structure" 事情是。我知道它们对应于基本微积分中的导数和积分。只是完全不知道它们是如何放在 Scheme 中的。
参见第 22 页的脚注 1:
In multiple dimensions the derivative Df(x) is a down tuple structure of the partial derivatives and the increment ∆x is an up tuple structure, so the indicated product is to be interpreted as a contraction. (See equation B.8.)
在文本中扫描 up
的外观,它似乎是一个包含实际值的两位元组。在 Scheme 中,两位元组可以是一个简单的 dotted pair 使用 cons
:
(define (up x y)
(if (and (real? x)
(real? y))
(cons x y)
(error "up: argument is not a Real"))))
(define up? cons?)
(define up-x car)
(define up-y cdr)
一些方案在——例如posn
在 Racket 的学生语言中。另一方面,在 #lang racket
中我们可能会使用 struct
rather than cons
and we would protect the struct
with a contract:
#lang racket
(struct up (x y))
(provide (contract-out
(struct up ((x real?)
(y real?)))))
免责声明
我扫描这本书的印象是 up
结构包含两个 Real 数值,但我并不声称完全理解数学。因此可能需要指定更复杂的数据类型或更广泛的验证。当然,对于某些类型的程序来说,没有类型验证的原始动态类型 cons
或 list
也是一种选择。
来自scmutils
reference manual:1
We identify the Scheme vector data type with mathematical n-dimensional vectors. These are interpreted as up tuples when a distinction between up tuples and down tuples is made. We inherit from Scheme the constructors VECTOR and MAKE-VECTOR, the selectors VECTOR-LENGTH and VECTOR-REF, and zero-based indexing.
而且,我认为,数学解释是:Covariance and contravariance of vectors。
1(转到 Up Tuples 和 Down Tuples 部分并向下滚动到乘法解释,以了解它的全部内容) .