Skip to content

earldouglas/sbt-frege

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 

Build status Latest version

Features

  • Compile Frege code from your project's src/main/frege/ directory
  • Call Frege code from your project's Java/Scala/etc. code
  • Launch the Frege REPL with your project's classes and libraries

Requirements

  • sbt 1.0.1+
  • Scala 2.4.0+

For sbt 0.13.6+ projects, use sbt-frege version 1.1.3

Getting started

Add the Frege sbt plugin to your project:

project/plugins.sbt:

addSbtPlugin("com.earldouglas" % "sbt-frege" % "3.0.2")

Write some Frege code:

src/main/frege/example/HelloWorld.fr:

package example.HelloWorld where

main :: [String] -> IO ()
main _ = println "Hello, world!"

Build and run it:

$ sbt
> compile
> run
Hello, world!

Try it from the Frege REPL:

$ sbt
> fregeRepl

frege> import example.HelloWorld (main)

frege> main []
Hello, world!
()

Configuration

Frege compiler

  • fregeOptions: Seq[String] - Extra options for fregec
  • fregeSource: File - Frege source directory (default src/main/frege/)
  • fregeTarget: File - Frege target directory (default target/frege/)
  • fregeCompiler: String - Full name of the Frege compiler (default frege.compiler.Main)
  • fregeLibrary: ModuleID - Frege library (fregec.jar) to use (default Frege 3.23.288)

Frege REPL

  • fregeReplVersion: String - The version of frege-repl to use (default 1.3)
  • fregeReplMainClass: String - The Frege REPL main class (default frege.repl.FregeRepl)

Though sbt-frege uses 3.24.100.1 by default, Frege REPL 1.3 depends on Frege 3.23.288, so it takes priority when launching fregeRepl.