[GHC] #14812: Dot-Notation for Function Application
GHC
ghc-devs at haskell.org
Thu Feb 15 15:37:12 UTC 2018
#14812: Dot-Notation for Function Application
-------------------------------------+-------------------------------------
Reporter: tepan | Owner: (none)
Type: feature | Status: new
request |
Priority: normal | Milestone:
Component: Compiler | Version: 8.2.2
Keywords: | Operating System: Unknown/Multiple
Architecture: | Type of failure: None/Unknown
Unknown/Multiple |
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
Please allow to put a dot `.` (without spaces) between two things for
''flipped'' function application. This could make for code in pseudo-OOP
style:
{{{#!hs
encrypt(str) = do {
str.map(succ);
}
}}}
Currently, as a workaround, this can be achieved by defining `(.) = flip
($)` (making `.` for function composition unavailable, though):
{{{#!hs
encrypt(str) = do {
str.map(succ);
} where (.) = flip ($)
}}}
(For a remotely similar look-and-feel, one could use `Data.Function.((&))`
instead of `(.)`.)
Please note that `.` without spaces is already an OOP-like notational
convenience in order to denote Modules and their elements.
{{{#!hs
x = do {
Prelude.length("Hello World!");
}
}}}
This means, that a distinction between ` . ` (with spaces) and `.`
(without spaces) is already been made, which is why `Just . Just $ 42`
compiles, wheras `Just.Just $ 42` doesn't. Analogously, with this Feature
Request implemented, `"Hello".map(succ)` would compile whereas `"Hello" .
map(succ)"` wouldn't.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14812>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list