相关疑难解决方法(0)

用Mathematica卷曲

可以使用以下结构在Mathematica中实现有限形式的Currying:

f[a_][b_][c_] := (a^2 + b^2)/c^2
Run Code Online (Sandbox Code Playgroud)

允许一个人做,例如:

f[4][3] /@ Range@5
Run Code Online (Sandbox Code Playgroud)
  {25, 25/4, 25/9, 25/16, 1}

有一个问题:Attributes只适用于第一个(一组)参数.考虑:

ClearAll[f]
SetAttributes[f, HoldAllComplete]

f[a_][b_][c_] :=
  {ToString@Unevaluated@a,
   ToString@Unevaluated@b,
   ToString@Unevaluated@c}

f[2 + 2][ 8/4 ][3 + 5]
Run Code Online (Sandbox Code Playgroud)
   {"2 + 2", "2", "8"}  

我的意图是返回"8 / 4",并"3 + 5"在列表中.


所以:

  • 有没有办法将属性扩展到此构造?

  • 是否有其他方便的结构来实现这一目标?

  • 除了属性之外,还有其他方法可以扩展Mathematica中的Currying吗?

wolfram-mathematica currying

32
推荐指数
5
解决办法
4019
查看次数

检查是否定义了符号

有没有一种简单的方法来检查是否有x的定义?我需要一个带有某种形式的函数f,f[_]或者如果有它的定义则f[_][_]返回True

要真正具体,我使用f [x] = b和g [x] [y] = z等构造存储东西,我需要检查f [x]是否对某些列表中的每个x都有定义,如果g [x] [y]在某些值集中对每个x,y都有一个定义

wolfram-mathematica

18
推荐指数
2
解决办法
7774
查看次数

标签 统计

wolfram-mathematica ×2

currying ×1