Epstein Files Full PDF

CLICK HERE
Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
Flag Counter
  1. World Encyclopedia
  2. Applicative functor - Wikipedia
Applicative functor - Wikipedia
From Wikipedia, the free encyclopedia
Intermediate structure between functors and monads

In functional programming, an applicative functor, or an applicative for short, is an intermediate structure between functors and monads. Applicative functors allow for functorial computations to be sequenced (unlike plain functors), but don't allow using results from prior computations in the definition of subsequent ones (unlike monads).

In terms of category theory, applicative functors may be defined as lax monoidal functors with tensorial strength[1]. This may not be the most obvious categorification of the standard definition of applicative functor given below, but they are equivalent in the category of Haskell types. Note that the observation that all monads are applicative functors is specific to the category of Haskell types, and is not true in general with this categorical definition of applicative functor; monads in an arbitrary category need not preserve any monoidal product.

Applicative functors were introduced in 2008 by Conor McBride and Ross Paterson in their paper Applicative programming with effects.[1]

Applicative functors first appeared as a library feature in Haskell, but have since spread to other languages such as Idris, Agda, OCaml, Scala, and F#. Glasgow Haskell, Idris, and F# offer language features designed to ease programming with applicative functors. In Haskell, applicative functors are implemented in the Applicative type class.

While in languages like Haskell monads are applicative functors, this is not always the case in general settings of category theory—examples of monads which are not strong can be found on Math Overflow.

Definition

[edit]

In Haskell, an applicative is a parameterized type that can be thought of as being a container for data of the parameter type with two additional methods: pure and <*>. The pure method for an applicative of parameterized type f has type

pure :: a -> f a

and can be thought of as bringing values into the applicative. The <*> method for an applicative of type f has type

(<*>) :: f (a -> b) -> f a -> f b

and can be thought of as the equivalent of function application inside the applicative.[2]

Alternatively, instead of providing <*>, one may provide a function called liftA2. These two functions may be defined in terms of each other; therefore only one is needed for a minimally complete definition.[3]

Applicatives are also required to satisfy four equational laws:[3]

  • Identity: pure id <*> v = v
  • Composition: pure (.) <*> u <*> v <*> w = u <*> (v <*> w)
  • Homomorphism: pure f <*> pure x = pure (f x)
  • Interchange: u <*> pure y = pure ($ y) <*> u

Every applicative is a functor. To be explicit, given the methods pure and <*>, fmap can be implemented as[3]

fmap g x = pure g <*> x

The commonly used notation g <$> x is equivalent to pure g <*> x.

Examples

[edit]

In Haskell, the Maybe type can be made an instance of the type class Applicative using the following definition:[2]

instance Applicative Maybe where
    -- pure :: a -> Maybe a
    pure a = Just a

    -- (<*>) :: Maybe (a -> b) -> Maybe a -> Maybe b
    Nothing  <*> _        = Nothing
    _        <*> Nothing  = Nothing
    (Just g) <*> (Just x) = Just (g x)

As stated in the Definition section, pure turns an a into a Maybe a, and <*> applies a Maybe function to a Maybe value. Using the Maybe applicative for type a allows one to operate on values of type a with the error being handled automatically by the applicative machinery. For example, to add m :: Maybe Int and n :: Maybe Int, one needs only write

(+) <$> m <*> n

For the non-error case, adding m=Just i and n=Just j gives Just(i+j). If either of m or n is Nothing, then the result will be Nothing also. This example also demonstrates how applicatives allow a sort of generalized function application.

See also

[edit]
  • Functor
  • Monad

References

[edit]
  1. ^ a b McBride, Conor; Paterson, Ross (2008-01-01). "Applicative programming with effects". Journal of Functional Programming. 18 (1): 1–13. CiteSeerX 10.1.1.114.1555. doi:10.1017/S0956796807006326. ISSN 1469-7653.
  2. ^ a b Hutton, Graham (2016). Programming in Haskell (2 ed.). pp. 157–163.
  3. ^ a b c "Control.Applicative".

External links

[edit]
  • Description of the Applicative typeclass in the Haskell docs
  • Definition of the Applicative typeclass in the Glasgow Haskell Prelude
  • v
  • t
  • e
Software design patterns
Gang of Four
patterns
Creational
  • Abstract factory
  • Builder
  • Factory method
  • Prototype
  • Singleton
Structural
  • Adapter
  • Bridge
  • Composite
  • Decorator
  • Facade
  • Flyweight
  • Proxy
Behavioral
  • Chain of responsibility
  • Command
  • Interpreter
  • Iterator
  • Mediator
  • Memento
  • Observer
  • State
  • Strategy
  • Template method
  • Visitor
Concurrency
patterns
  • Active object
  • Balking
  • Binding properties
  • Double-checked locking
  • Event-based asynchronous
  • Guarded suspension
  • Join
  • Lock
  • Monitor
  • Proactor
  • Reactor
  • Read–write lock
  • Scheduler
  • Scheduled-task pattern
  • Semaphore
  • Thread pool
  • Thread-local storage
Architectural
patterns
  • Front controller
  • Interceptor
  • MVC
    • MVP
    • MVVM
  • ADR
  • ECS
  • n-tier
  • Specification
  • Publish–subscribe
  • Naked objects
  • Service locator
  • Active record
  • Identity map
  • Data access object
  • Data transfer object
  • Inversion of control
  • Model 2
  • Broker
Other
patterns
  • Blackboard
  • Business delegate
  • Composite entity
  • Composition over inheritance
  • Dependency injection
  • Guard clause
  • Intercepting filter
  • Lazy loading
  • Mock object
  • Null object
  • Object pool
  • Servant
  • Twin
  • Type tunnel
  • Method chaining
  • Delegation
Books
  • Design Patterns
  • Enterprise Integration Patterns
People
  • Christopher Alexander
  • Erich Gamma
  • Ralph Johnson
  • John Vlissides
  • Grady Booch
  • Kent Beck
  • Ward Cunningham
  • Martin Fowler
  • Robert Martin
  • Jim Coplien
  • Douglas Schmidt
  • Linda Rising
Communities
  • The Hillside Group
  • Portland Pattern Repository
See also
  • Anti-pattern
  • Architectural pattern
Retrieved from "https://teknopedia.ac.id/w/index.php?title=Applicative_functor&oldid=1325795148"
Categories:
  • Programming idioms
  • Functional programming
  • Software design patterns
Hidden categories:
  • Articles with short description
  • Short description is different from Wikidata

  • indonesia
  • Polski
  • العربية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصرى
  • Nederlands
  • 日本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українська
  • Tiếng Việt
  • Winaray
  • 中文
  • Русский
Sunting pranala
url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id