Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Effect system
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Implementations == === Core Feature === * [[Koka (programming language)|Koka]] is a [[statically typed]] [[functional programming]] language with algebraic effect handlers as a main feature.<ref>{{cite web |title=The Koka Manual |url=https://koka-lang.github.io/koka/doc/kokaspec.html |website=koka-lang.github.io}}</ref> * [[Eff (programming language)|Eff]] is a statically typed functional programming language centered around algebraic effect handlers.<ref>{{Citation|last=Pretnar|first=Matija|title=Eff|date=2021-12-07|url=https://github.com/matijapretnar/eff|access-date=2021-12-11}}</ref> * [[Unison (programming language)|Unison]] is a statically typed functional programming language with algebraic effect handlers (called "abilities" in the language) as a core part of the type system.<ref>{{Cite web|title=The Unison language|url=https://www.unisonweb.org/|access-date=2021-12-07|website=www.unisonweb.org}}</ref> * [https://effekt-lang.org/ Effekt] is a research language centered around effect handlers and polymorphic effects.<ref>{{Cite web |author=The Effekt research team|title=Effekt Language: Concepts and Features |url=https://effekt-lang.org/docs/concepts |access-date=2023-06-13 |website=Effekt Language}}</ref> === Full Support === * [[Haskell (programming language)|Haskell]] is a statically typed functional programming language with several packages that allow for encoding of effects.<ref>{{cite web |last1=Vera |first1=Josh |title=joshvera/freemonad-benchmark |url=https://github.com/joshvera/freemonad-benchmark |website=GitHub |date=18 April 2020 |quote=A benchmark comparing the performance of different free monad implementations.}}</ref> However, Haskell is generally more focused on [[Monad (functional programming)|monads]]. * [[OCaml|OCaml 5.0]] introduced support for experimental effect handler primitives,<ref>{{Cite web |title=OCaml - Language extensions |url=https://v2.ocaml.org/manual/effects.html |access-date=2023-06-13 |website=v2.ocaml.org}}</ref> with plans to introduce a proper high-level syntax in the future. === Partial Support and Prototypes === * [[Scala (programming language)|Scala 3.1]] is a statically typed, functional and [[object oriented]] programming language with experimental support for effects that is limited to [[Exception (computer science)|exception]]s, in the form of a <code>CanThrow</code> capability.<ref>{{Cite web|title=CanThrow Abilities|url=https://docs.scala-lang.org/scala3/reference/experimental/canthrow.html|access-date=2021-12-07|website=Scala Documentation}}</ref> * [[Java (programming language)|Java]] is a statically typed, object oriented programming language; its [[checked exception]]s are a relatively limited example of an effect system. Only one effect kind β <code>throws</code> β is available, there is no way to resume with a value, and they cannot be used with functions (only methods) unless the function implements a custom <code>[[@FunctionalInterface]]</code>.<ref>{{Cite web|title=Java 8 Lambda function that throws exception?|url=https://stackoverflow.com/questions/18198176/java-8-lambda-function-that-throws-exception|access-date=2021-12-25|website=Stack Overflow}}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)