and ability to abstract away common patterns. This is largely enabled
by features like an advanced type system with polymorphism and higher
order functions.
and ability to abstract away common patterns. This is largely enabled
by features like an advanced type system with polymorphism and higher
order functions.
\item Type-safer. Functional programs typically have a highly expressive
type system, which makes it harder to write incorrect code.
\item Easy to process. Functional languages have nice properties like
\item Type-safer. Functional programs typically have a highly expressive
type system, which makes it harder to write incorrect code.
\item Easy to process. Functional languages have nice properties like
A domain-specific language (\small{DSL}) is a program-
ming language or executable specification language
that offers, through appropriate notations and ab-
A domain-specific language (\small{DSL}) is a program-
ming language or executable specification language
that offers, through appropriate notations and ab-
An embedded \small{DSL} is a \small{DSL} that is embedded in
another language. Haskell is commonly used to embed \small{DSL}s
in, which typically means a number of Haskell functions and types
An embedded \small{DSL} is a \small{DSL} that is embedded in
another language. Haskell is commonly used to embed \small{DSL}s
in, which typically means a number of Haskell functions and types
applicative, subset of Haskell where the library functions are the
primitives. Sometimes advanced haskell features such as
polymorphism, higher order values or type classes can be used in
applicative, subset of Haskell where the library functions are the
primitives. Sometimes advanced haskell features such as
polymorphism, higher order values or type classes can be used in
variables (\eg, using the same variable twice while only calculating it
once) and cycles in circuits are non-trivial to properly and safely
translate (though there is some work to fix this, but that has not been
variables (\eg, using the same variable twice while only calculating it
once) and cycles in circuits are non-trivial to properly and safely
translate (though there is some work to fix this, but that has not been
\item Some things are verbose to express. Especially ForSyDe suffers
from a lot of notational overhead due to the Template Haskell approach
used. Since conditional statements are not supported, a lot of Haskell's
\item Some things are verbose to express. Especially ForSyDe suffers
from a lot of notational overhead due to the Template Haskell approach
used. Since conditional statements are not supported, a lot of Haskell's