Siempre me pregunte como no habia un leguaje igual a Haskell pero que corra en la plataforma java y aca esta!! Frege, que si vien no es una copia exacta de Haskell tiene mucha similitud.
Este lenguaje soporta muchas características de haskell, como:
- Typeclasses con polimorfismo
- Pattern matching
- Listas por compresión
- módulos
- Abstracción matemática que nos permite tenes estructuras como functors, monoids, semigroups, y monads.
Veamos un poco de código:
-- file hello.fr
module Hello where -- moduleName maybe hierarchical as pkgdir.JavaClassname
main args = println $ "Hello world! your arguments are: " ++ show args
En este ejemplo se puede ver un simple hello world. Como ven es mu similar a haskell para tiene una clara influencia de la plataforma java.
Veamos otro ejemplo:
{--
Este programa muestra la
hora actual en la salida estándar
cada dos segundos.
-}
module examples.CommandLineClock where
data Date = native java.util.Date where
native new :: () -> IO (MutableIO Date) -- new Date()
native toString :: Mutable s Date -> ST s String -- d.toString()
--- 'IO' action to give us the current time as 'String'
current :: IO String
current = do
d <- Date.new () -- reads system timer, hence IO
d.toString
main args =
forever do
current >>= print -- print formatted date
print "\r" -- followed by carriage return
stdout.flush -- make sure it's shown
Thread.sleep 999L -- wait 0.999 seconds
Este lenguaje fue diseñado por Ingo Wechsung quien nombra este lenguaje Frege por el matemático alemán Gottlob Frege.
Además podemos probarlo de forma online desde esta pagina: http://try.frege-lang.org/
Dejo links:
https://github.com/Frege/frege
https://en.wikipedia.org/wiki/Frege_(programming_language)