4

According to a Mathematica textbook, we can write N[x,n] by using infix notation as x ~ N ~ n. How about other functions with one argument or more than 2 arguments, is it possible?

kiss my armpit
  • 757
  • 4
  • 15

3 Answers3

13

One can use Sequence for such purposes

Sequence[]~f~x
x~f~Sequence[]

f[x]

f[x]

x1~f~Sequence[x2, x3]

f[x1, x2, x3]

ybeltukov
  • 43,673
  • 5
  • 108
  • 212
3

If, in an input cell, you type the expression,

x1 ~ f ~ x2 ~ f ~ x3

it will evaluate to

f[f[x1,x2],x3]

UNLESS the symbol f has the attribute Flat in which case it will evaluate to

f[x1,x2,x3]
DSkinner
  • 91
  • 6
0

From the Infix[] documentation page, you can:

x1 ~ f ~ x2 ~ f ~ x3 ~ ... === Infix[f[x1,x2,x3,...]]
shrx
  • 7,807
  • 2
  • 22
  • 55
  • How about functions with one argument? – kiss my armpit Dec 28 '13 at 22:11
  • 1
    Did you actually try what you wrote above? This is wrong. Infix notation is primarily for 2 argument functions and works for multiple arguments when the function is Flat. The Infix function that you refer to is only a typesetting function. – rm -rf Dec 28 '13 at 22:13
  • @StiffJokes I'd use @. edit: @rm -rf: Is the documentation wrong? – shrx Dec 28 '13 at 22:13
  • 2
    @shrx It's confusing, especially since F1 on ~ takes you there... the Infix function is more for typesetting than the function calls notation. For instance, Prefix[f[x]] will give you f@x, but this f@x is not equivalent to typing out f@x (try evaluating the two). Check out the full forms: Infix[f[x1, x2, x3]] // FullForm and x1~f~x2~f~x3 // FullForm – rm -rf Dec 28 '13 at 22:19
  • @rm-rf Oh! I miss the times when those were hot themes here .) – Dr. belisarius Dec 29 '13 at 05:50