一句话:提出嵌入 Haskell 的 EDSL,以索引记法表达张量并用代数结构定义语义。
张量记号在数学多个领域广泛使用,却未被函数式编程社区普遍支持。现有张量代数 DSL 要么面向数组、未能利用张量代数性质,要么遵循范畴结构但要求不便的无点(point-free)风格。更根本地,张量微积分教学常默认读者接受程序员难以承受的记号自由,并忽视变量绑定、语法与语义等语言层面问题。本文指出标准张量记号的一些性质从 λ 演算视角看颇为特殊,进而定义一种嵌入 Haskell 的 DSL,其语法贴近文献常用的张量索引记法,并以定义张量的代数结构给出语义。作者认为该 EDSL 既可用于科学计算,也可作为表达和呈现张量理论及应用的载体。摘要未报告实验评估。
Abstract The tensor notation used in several areas of mathematics is a useful one, but it is not widely available to the functional programming community. In a practical sense, the (embedded) domain-specific languages ( dsl s) that are currently in use for tensor algebra are either 1. array-oriented languages that do not enforce or take advantage of tensor properties and algebraic structure or 2. follow the categorical structure of tensors but require the programmer to manipulate tensors in an unwieldy point-free notation. A deeper issue is that for tensor calculus, the dominant pedagogical paradigm assumes an audience which is either comfortable with notational liberties which programmers cannot afford, or focus on the applied mathematics of tensors, largely leaving their linguistic aspects (behaviour of variable binding, syntax and semantics, etc.) for the reader to figure out by themselves. This state of affairs is hardly surprising, because, as we highlight, several properties of standard tensor notation are somewhat exotic from the perspective of lambda calculi. We bridge the gap by defining a dsl , embedded in Haskell, whose syntax closely captures the index notation for tensors in wide use in the literature. The semantics of this edsl is defined in terms of the algebraic structures which define tensors in their full generality. This way, we believe that our edsl can be used both as a tool for scientific computing, but also as a vehicle to express and present the theory and applications of tensors.