Saludos comunidad,
Quiero presentarles mi proyecto de verano llamado
FoxSharp. Es un lenguaje de dominio específico (DSL) escrito en C# que le permite a Visual FoxPro realizar diversas tareas de cómputo apoyándose desde luego de la plataforma NET. Los dominios específicos son
envío de email y
peticiones HTTP (este último en mantenimiento) pero pienso expandir su dominio a medida que lo vaya usando
(y espero que ustedes también).
El lenguaje es turing completo por lo que además de lo anterior también ofrece las características comunes que ofrecen otros lenguajes tales como:
1. Enlaces de Variables (Variable bindings)
2. Tipos de datos primitivos
3. Tipos de datos compuestos (Array, Hash, Email, Http)
4. Expresiones lógicas y aritméticas
5. Funciones integradas
6. Funciones de alto orden
7. Clausuras
8. Control de flujo
Todas las funciones son
ciudadanas de primera clase o
(First Class Citizen) lo cual quiere decir que se deben tratar como tratamos cualquier variable de otro tipo. Esta característica junto con las clausuras las he tomado prestadas de
Haskell que a mi parecer es uno de los lenguajes más poderosos de la
programación funcional.
FoxSharp también cuenta con un conjunto de funciones integradas que (en conjunto con el control de flujo) permiten tratar los datos, por ahora hay poco más de 10 pero sin duda habrá más :)
Si van al repositorio podrán ver en la carpeta
Redist una aplicación llamada
FoxSharpREPL.app con la que podrán jugar un rato para familiarizarse con el lenguaje, solo tienen que apuntar al directorio donde se encuentran estos ficheros y lanzar la aplicación desde el IDE de Visual FoxPro:
cd c:\my-foxsharp\folder\
do FoxSharpREPL.app

Desde la REPL podrán ejecutar código FoxSharp y recibir la respuesta directamente en la consola de salida en la parte inferior. Por ejemplo pueden enviar un email de la siguiente forma:
// primero creamos el tipo de dato smpt
myEmail := smtp {
"provider": "smtp.gmail.com",
"port": 587,
"user": "email-adm...@dominio.com",
"pass": "la-contraseña",
"from": "alg...@dominio.com",
"to": "otro-a...@dominio.com",
"subject": "Qué te parece este lenguaje?",
"body": "Se ve interesante ¿verdad?",
};
// enviamos el email con la función send()
if (send(myEmail)) {
info("email enviado!");
} else {
error("ha ocurrido un error en el envío del email.");
}La sintaxis está inspirada en C# y algunas funciones integradas coinciden con las de Visual FoxPro. El proyecto es completamente open source y espero que les sea de gran utilidad como lo es para mí.
Para ver más información vayan al repositorio y lean el README que contiene información detallada acerca del uso tanto en modo consola como en modo producción.
IMPORTANTE: Quiero agradecer a mis patrocinadores de patreon quienes me han apoyado todo este tiempo. Sin su ayuda no habría podido comprar los libros que necesitaba para realizar este tipo de proyecto.
Los que deseen apoyarme en patreon o paypal bienvenido sean y gracias de antemano.
¡Feliz día para todos!