Angel \”Java\” Lopez on Blog

July 24, 2014

DylanSharp Implementing Dylan in C# (1) The Project

Filed under: .NET, C Sharp, DylanSharp, Functional Programming, Open Source Projects — ajlopez @ 4:30 pm

A few months ago I started to implement an interpreter of Dylan language, to practice TDD in C #, and learn some functional programming. I read:

http://opendylan.org/

Dylan is a multi-paradigm functional and object-oriented programming language. It is dynamic while providing a programming model designed to support efficient machine code generation, including fine-grained control over dynamic and static behaviors.

The interesting thing about Dylan is that it incorporates types and objects. For now I do not intend to generate machine code, but, following "baby steps" to implement the main concepts of language as an interpreter. I would like to add access to the libraries. NET, which I find interesting to extend the reach of language. You can learn more of the language in:

http://opendylan.org/documentation/intro-dylan/index.html

The project I am writing in C # is:

https://github.com/ajlopez/DylanSharp

Its current structure:

It consists of a class library, and a draft tests. So far there are some simple expressions implemented a Parser a Lexer and implemented as a concept of class C # language: List, which lists as implemented in Lisp. As in other projects, I Context to maintain the values ​​of variables, and recall by name. Notably, in Dylan variables have type, but I’m not controlling the types, just evaluating any expressions. I’ll have to decide at some point to control the types at the time of compiling / processing program. According:

http://opendylan.org/documentation/intro-dylan/expressions-variables.html#type-declarations

Type mismatch errors should be caught at compile time.

But the time will come. Advancing TDD, I am confident that if necessary I can make a “surgical” refactor / redesign, without a lot of pain. I could do this in the next iteration or later. I did something similar during the coding of ScalaSharp.

Next steps: continue implemented expressions, definitions of classes, modules, commands, anonymous functions. And control the types.

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

January 7, 2014

End of Iteration 2014w01

Previous Post
Next Post

First iteration of the year, more open source ideas, design, and TDD deliberate practice.

Code Generation, using AjGenesis

I updated

https://github.com/ajlopez/AjGenesisNode my AjGenesis tool for code generation
https://github.com/ajlopez/AjGenesisNode-Entity AjGenesis module to manage entity model
https://github.com/ajlopez/AjGenesisNode-Express AjGenesis module with tasks and templates to generate a simple web site, based on Node.js, Express, MongoDB

You can try the Quick Start of the Express module. Next steps:

– More property types
– Client-side validation
– Generate some basic tests
– Support of one-to-many entity relation

I could adapt the same templates to have another module that will generate PHP, MySQL web sites.

SimpleFlow

I published version 0.0.1 of:

https://github.com/ajlopez/SimpleFlow

I need it for chaining async calls in my tests and in my controlles in a non-public project. Use case to be described.

DylanSharp

I started to write a C# interpreter:

https://github.com/ajlopez/DylanSharp

trying to emulate Dylan language:

http://opendylan.org/

It’s a lisp-like programming language, with classes, and with a more Ruby/Python-like syntax, instead of parenthesis. As usual, I want to access native .NET types, classes and ecosystem, from a dynamic languages.

AjErl

I added first module support for my Erlang C# interpreter

https://github.com/ajlopez/AjErl

Others

I continue to adapt my old PHP sites https://github.com/ajlopez/ajlopezsite https://github.com/ajlopez/Todocontenidos to support latests PHP versions. I was working on three non-public projects, too.

More fun is coming.

Keep tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Create a free website or blog at WordPress.com.