两个数字的乘法可以通过算法定义,如下所示:'将第一个数字加到自身的次数等于第二个数字的数值'。两个数的幂运算可以通过算法定义如下:“将第一个数乘以自己的次数等于第二个数的值”。思考乘法和幂乘的定义引发了一些问题...推广算术运算符
首先,可以通过以加法作为基本操作开始定义一类算术操作吗?我写了一些Haskell代码来验证这一想法:
order1 x y = x + y
order2 x y = foldl (order1) x (replicate (y - 1) x)
order3 x y = foldl (order2) x (replicate (y - 1) x)
order4 x y = foldl (order3) x (replicate (y - 1) x)
order5 x y = foldl (order4) x (replicate (y - 1) x)
果然,“order2”的含义是乘法和“order3”的含义是幂。据我所知,英语中缺乏'orderN'的词汇,其中N> 3。数学界是否有任何关于这些操作的有趣说法?
另外,鉴于这些“订单”功能递归的外观,怎么可能一个写这样的功能:
generalArithmetic :: Int -> Int -> Int -> Int
generalArithmetic n x y = --Comment: what to put here?
这意味着乘法当n等于2,意味着幂n = 3时... ?
另外,如何推广这些算术函数,以便它们可以对所有实数进行操作?毕竟,'复制'的类型是Int - > a - > [a]。
http://en.wikipedia.org/wiki/Tetration –
一般表达式为[超运算](http://en.wikipedia.org/wiki/Hyperoperation)。 – leftaroundabout
**自然**数的乘/幂可以定义为“低阶”操作的重复应用。更难以说明将“x^-7.6”解释为“将x乘以-7.6倍”意味着什么。 – Ben