# Interfacing Frege and Ring

DevFeed: [Interfacing Frege and Ring](<https://devfeed.tech/articles/interfacing-frege-and-ring-32136.md>)

Original publisher: [Read original article](<https://adambard.com/blog/interfacing-frege-and-ring/>)

Published: 2014-12-21T00:00:00Z

Content type: tutorial

Language: en

Sources: [Adam Bard](<https://devfeed.tech/sources/adam-bard.md>)

Topics: [ClojureScript](<https://devfeed.tech/topics/clojurescript.md>), [Haskell](<https://devfeed.tech/topics/haskell.md>), [Java](<https://devfeed.tech/topics/java.md>)

Tags: [clojure](<https://devfeed.tech/tags/clojure.md>), [functional](<https://devfeed.tech/tags/functional.md>), [haskell](<https://devfeed.tech/tags/haskell.md>), [interop](<https://devfeed.tech/tags/interop.md>), [java](<https://devfeed.tech/tags/java.md>), [type-system](<https://devfeed.tech/tags/type-system.md>), [web-services](<https://devfeed.tech/tags/web-services.md>)

## AI overview

This tutorial explains how to interface Frege, a strongly typed functional language for the JVM, with Clojure and Ring. It describes using Frege for type-safe intermediary code, converting Ring request and response maps at the boundaries, and interoperating with Clojure maps through Frege's Java FFI.

## Source excerpt

Frege is a strongly-typed functional language for the JVM. Its goal is to mirror Haskell as closely as is possible on the platform, and as far as I can tell it does a pretty decent job. It seems performant enough, and more importantly grants access to a Haskell-esque type system. This makes it a pretty good complement to Clojure for those problems where a strong typing system is important. The downside to Frege is that, even though documentation exists (and is actually quite expansive given the language's limited adoption), it's still hard to find straightforward how-tos by googling. So here's some much-needed frege-related blogspam to fill out those results.