Feval alternatives and similar packages
Based on the "Language" category.
Alternatively, view Feval alternatives based on common mentions on social networks and blogs.
elm-compiler10.0 3.5 Feval VS elm-compilerCompiler for Elm, a functional language for reliable webapps.
brittany9.9 0.0 Feval VS brittanyhaskell source code formatter
polysemy9.9 4.5 Feval VS polysemy:gemini: higher-order, no-boilerplate monads
cryptol9.9 9.1 Feval VS cryptolCryptol: The Language of Cryptography
stylish-haskell9.9 6.4 Feval VS stylish-haskellHaskell code prettifier [Moved to: https://github.com/haskell/stylish-haskell]
liquidhaskell9.9 9.8 Feval VS liquidhaskellLiquid Types For Haskell
elm-reactor9.8 0.0 Feval VS elm-reactorInteractive development tool for Elm programs
elm-server9.8 0.0 Feval VS elm-serverServer for developing Elm projects
ivory9.8 0.0 Feval VS ivoryThe Ivory EDSL
elm-package9.7 0.0 Feval VS elm-packagePackage manager for Elm libraries
elm-get9.7 0.0 Feval VS elm-getTool for sharing and using Elm libraries
haskell-src-exts9.7 0.0 Feval VS haskell-src-extsManipulating Haskell source: abstract syntax, lexer, parser, and pretty-printer
frp-arduino9.6 0.0 Feval VS frp-arduinoArduino programming without the hassle of C.
haskell-tools-ast9.6 0.0 Feval VS haskell-tools-astDeveloper tools for Haskell
haskell-tools-ast-gen9.6 0.0 Feval VS haskell-tools-ast-genDeveloper tools for Haskell
haskell-tools-ast-fromghcDeveloper tools for Haskell
liquid-fixpoint9.5 9.0 Feval VS liquid-fixpointHorn Clause Constraint Solving for Liquid Types
language-python9.5 0.0 Feval VS language-pythonA parser for Python 2.x and 3.x written in Haskell
nirum9.5 0.0 Feval VS nirumNirum: IDL compiler and RPC/distributed object framework for microservices
elm-export9.4 0.0 Feval VS elm-exportCreate Elm types and JSON decoders from Haskell source.
axel9.4 5.5 Feval VS axelHaskell + Lisp
elsa9.4 0.0 Feval VS elsaElsa is a lambda calculus evaluator
language-java9.3 0.0 Feval VS language-javaJava parser and printer for haskell
tal9.3 0.0 Feval VS talAn implementation of Typed Assembly Language (Morrisett, Walker, Crary, Glew)
shentong9.3 0.0 Feval VS shentongA Haskell implementation of the Shen programming language.
elm-bridge9.2 4.4 Feval VS elm-bridgeHaskell: Derive Elm types from Haskell types
camfort9.2 0.0 Feval VS camfortLight-weight verification and transformation tools for Fortran
hfmt9.2 0.0 Feval VS hfmtFormat Haskell programs. Inspired by the gofmt utility.
ghc-justdoit9.1 0.0 Feval VS ghc-justdoitA magic typeclass that just does it
peggy9.1 0.0 Feval VS peggyThe Parser Generator for Haskell
jvm-parser9.1 0.0 Feval VS jvm-parserA Haskell parser for JVM bytecode files
type-of-html9.1 0.0 Feval VS type-of-htmlHigh performance type safe html generation
hgrep9.1 0.8 Feval VS hgrepSearch Haskell source code from the command line
language-c-quote9.0 1.0 Feval VS language-c-quoteC/CUDA/OpenCL/Objective-C quasiquoting library.
exference9.0 0.0 Feval VS exferenceHaskell tool to generate expressions from types
aterm-utils8.9 0.0 Feval VS aterm-utilsUtility functions for working with aterms as generated by Minitermite
fortran-src8.9 0.0 Feval VS fortran-srcFortran parsing and static analysis infrastructure
language-ecmascript8.9 0.0 Feval VS language-ecmascriptHaskell library: ECMAScript parser, pretty-printer and additional tools
language-rust8.9 0.0 Feval VS language-rustParser and pretty-printer for the Rust language
formura8.8 0.0 L3 Feval VS formuraDescribe stencil formurae without even translating them
ministg8.8 0.0 Feval VS ministgMinistg is an interpreter for a high-level, small-step, operational semantics for the STG machine.
homplexity8.8 0.0 Feval VS homplexityHaskell code complexity and quality measurement
why38.8 0.0 Feval VS why3Haskell support for the Why3 input format
haskell-names8.7 0.0 Feval VS haskell-namesHaskell suite library for name resolution
LibClang8.7 0.0 Feval VS LibClangHaskell FFI to libclang
imprevu8.7 0.0 Feval VS imprevuThe Nomyx game
nomyx-library8.7 0.0 Feval VS nomyx-libraryThe Nomyx game
pyfi8.6 0.0 Feval VS pyfiCall python inline from haskell
Access the most powerful time series database as a service
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Feval or a related project?
Feval - evaluation using f-algebras
Author: Anthony Burzillo
Feval is a statically typed functional programming language that uses f-algebras as opposed to classic recursion to solve the problem of evaluation and typechecking, which allows the compiler to perform better optimizations.
The overall language of Feval is EF, which is an extension of the smaller language F. In order to run a program written in EF, we first use an f-algebra to transform the AST to F, and then we transform the result (via an f-algebra) into the individual AST's used by the evaluator's f-algebra and the typechecker's f-algebra. The reason we need to use seperate f-algebras is because we need to stall the processing of certain subtrees of the AST in order to ensure correct evaluation and typechecking. For instance, we cannot evaluate the expression of a anonymous function until we have obtained its argument. Similarly, we cannot typecheck a function until we have assigned a type hypothesis to the variable.
For more information on how we solve these problems, check out the article Feval: F-Algebras for expression evaluation. For an in-depth explanation of parsing see Feval: Parsing a functional language with Parsec
To build Feval run
cabal configure && cabal build && cabal install.
Then you can run
Feval which acts as a REPL:
$ ./feval Function x -> x && True => Function x -> x && True : Bool -> Bool (Function x -> Function y -> x + y / 50) 5 => Function y -> 5 + y / 50 : Int -> Int Let f x = If x = 0 Then 1 Else x * f (x - 1) In f 6 => 720 : Int Case [1, 2, 3, 4] Of  -> 0 | (x : xs) -> x + 6 => 7 : Int Function x -> Case True : x Of  -> True | (y : ys) -> True || !(y || False) => Function x -> Case True Of  -> True | (y, ys) -> True || !(y || False) : [Bool] -> Bool
To quit simply press ctrl-d.
Since the REPL can only handle one line expressions, we also allow
feval to take a file to execute as an argument.
For instance, with the provided file mergesort.fvl:
$ feval mergesort.fvl => [-34, 3, 4, 23] : [Int]
We allow conjunction (&&), disjunction (||), and negation (!) expressions.
The operations of addition (+), subtraction (-), multiplication (*), division (/), and modulus (%) evaluate to integer values. On the other hand, the comparison operators of equality (=), less-than (<), less-than-or-equal (<=), greater-than (>), and greater-than-or-equal (>=) all evaluate to boolean values.
We allow the creation of anonymous functions via
Function x -> e where
e is some expression, and
x is the argument
to the function. We can create multiple argument anonymous functions via
Function x -> Function y -> e where
the first argument and
y is the second, etc.
To apply a function
f simply use
f e where
e is the expression for the first argument, or
f e1 e2 for the first
e1 and second argument
If e1 Then e2 Else e3.
We allow let expressions to define constants and functions (possibly recursive) via
Let x = 4 In x + 54
Let f x y = If x = 0 Then 0 Else y + f (x - 1) y In f 3 4
An expression of the form
e1; e2 first evaluates
e2 and returns the result of
You can create empty lists
 or lists with values
[1, 2, 3, 4]. You can cons values onto a list via
5 : [4, 5, 6] => [5, 4, 5, 6] : [Int]
Finally, we can match on lists via a case expression via
Case e1 Of  -> e2 | (x : xs) -> e3