Infix operator: Difference between revisions

From HaskellWiki
(talks about using infix operators as prefix functions, and vice versa)
 
m (Various minor changes)
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Category:Syntax]] [[Category:Glossary]]
== Overview ==
== Overview ==


Functions in Haskell are usually called using prefix notation, or the function name followed by its arguments.  However, some functions, like +, are called with infix notation, or putting the function name between its two arguments.
Functions in Haskell are usually called using prefix notation, or the function name followed by its arguments.  However, some functions e.g. addition are called using ''infix notation'' - putting the function name between its two arguments:
 
  Prelude> 17 + 25
  42


== Using infix functions with prefix notation ==
== Using infix functions with prefix notation ==


Putting parenthesis around an infix operator converts it into a prefix function:
Putting parentheses around an infix operator converts it into a prefix function:


   Prelude> (+) 1 2
   Prelude> (+) 1 2
Line 14: Line 18:
== Using prefix functions with infix notation ==
== Using prefix functions with infix notation ==


Putting ` marks around a prefix function allows us to use it like an infix function:
Putting <code>`</code>-marks around a prefix function allows us to use it like an infix function:


   Prelude> let concatPrint x y = putStrLn $ (++) x y
   Prelude> let concatPrint x y = putStrLn $ (++) x y
Line 22: Line 26:
   ab
   ab


Note that you can only do this with a function that takes two arguments.
Note that you can only normally do this with a function that takes two arguments. Actually, for a function taking more than two arguments, you can do it but it's not nearly as nice (note the need for extra parentheses):
 
Prelude> foldl (+) 0 [1..5]
15
Prelude> ((+) `foldl` 0) [1..5]
15
 
== See also ==
 
* [[section of an infix operator]]
* [[use of infix operators]]

Latest revision as of 23:45, 25 June 2021

Overview

Functions in Haskell are usually called using prefix notation, or the function name followed by its arguments. However, some functions e.g. addition are called using infix notation - putting the function name between its two arguments:

 Prelude> 17 + 25
 42

Using infix functions with prefix notation

Putting parentheses around an infix operator converts it into a prefix function:

 Prelude> (+) 1 2
 3
 Prelude> (*) 3 4
 12

Using prefix functions with infix notation

Putting `-marks around a prefix function allows us to use it like an infix function:

 Prelude> let concatPrint x y = putStrLn $ (++) x y
 Prelude> concatPrint "a" "b"
 ab
 Prelude> "a" `concatPrint` "b"
 ab

Note that you can only normally do this with a function that takes two arguments. Actually, for a function taking more than two arguments, you can do it but it's not nearly as nice (note the need for extra parentheses):

Prelude> foldl (+) 0 [1..5]
15
Prelude> ((+) `foldl` 0) [1..5]
15

See also