Block editor for Haskell

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Block editor for Haskell

alex-21
Hi all,

I'm wondering if anyone has made a 'block editor' for Haskell, i.e. a
syntax-aware text editor where you make a program by snapping together
type-compatible words, usually with a mouse. Something similar to
Scratch for example: https://scratch.mit.edu/

Any leads appreciated!

Best wishes

alex
_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.
Reply | Threaded
Open this post in threaded view
|

Re: Block editor for Haskell

Alan & Kim Zimmerman

On 26 April 2018 at 10:47, Alex McLean <[hidden email]> wrote:
Hi all,

I'm wondering if anyone has made a 'block editor' for Haskell, i.e. a
syntax-aware text editor where you make a program by snapping together
type-compatible words, usually with a mouse. Something similar to
Scratch for example: https://scratch.mit.edu/

Any leads appreciated!

Best wishes

alex
_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.


_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.
Reply | Threaded
Open this post in threaded view
|

Re: Block editor for Haskell

Chris Smith-31
In reply to this post by alex-21
Alex, a couple years ago, Stefan Jacholke built something like this for CodeWorld, which is a variant of Haskell.  It's not general-purpose and builds for a custom prelude, but it might be worth looking at.  You should be aware that while I've kept it basically working, there are plenty of known bugs.


On Thu, Apr 26, 2018, 1:48 AM Alex McLean <[hidden email]> wrote:
Hi all,

I'm wondering if anyone has made a 'block editor' for Haskell, i.e. a
syntax-aware text editor where you make a program by snapping together
type-compatible words, usually with a mouse. Something similar to
Scratch for example: https://scratch.mit.edu/

Any leads appreciated!

Best wishes

alex
_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.

_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.
Reply | Threaded
Open this post in threaded view
|

Re: Block editor for Haskell

Alfred Matthews
In reply to this post by Alan & Kim Zimmerman
This is substantially interesting to me personally, persuant a paste below, as a spectator of PLD.

Pretty keen to read the, Hey, but, wait,

Alfred Matthews.


Better Collaboration
One of the most difficult things about collaborative development is handling merge conflicts.

The vast majority of merge conflicts are results of non-functional changes: Renames, reformatting, textual movement of code lines between files, etc.

In Lamdu, "names", the "position" of the code and other non-functional aspects of code are separate from the code itself, and avoid conflicts.

Rename conflicts
To get a conflict due to "rename" operations, two developers must rename the same variable to two different names. Even then, the code is still executable, but its on-screen rendering will display a localized conflict.

Formatting conflicts
Formatting is automatic, so there is no way to generate a conflict.

Code movement conflicts
The "position" of code is meta-data attached to the code, helping to find that code and position its rendering.

Since code is not structured into text files, code "position" conflicts are similarly less harmful, less likely and localized.

Change tracking
Instead of heuristically guessing what changed in the code, as traditional version control systems do, Lamdu uses an integrated revision control system and records the changes by the programmer as revisions.

This acts as a record of the developer's intent, allowing the RCS to distinguish, for example, between function deletion and writing of a similar function, and the modification of that same function. The recording of intent helps prevent and resolve conflicts.

Regression Debugging
Integrated revision control and live test cases will allow "Regression Debugging".

When a change causes a regression, the root of the problem can be found quickly, by finding the deepest function application whose result value diverged from the correct version of the code.

Automatic Formatting and Sugaring
Lamdu attempts to take away as much inconsequential freedom from the developer, to free his mind and his key strokes to deal with the parts that matter in the code. Thus, Lamdu does not provide means to edit formatting on a case-by-case basis. Generalized changes to layout rules can be provided, instead.

Additionally, to avoid further stylistic dilemmas, Lamdu uses automatic sugaring of code, as the dual of typical "de-sugaring" done by textual languages.

The code is edited and displayed in its sugared form. The edits to this form are translated to lower-level, simpler edits of the stored language, which is de-sugared. Lamdu uses "co-macros" that capture patterns in the lower-level code and automatically sugar it to canonical form. This frees the programmer from worrying about whether to use sugar for each particular case.
On Thu, Apr 26, 2018, 5:16 AM Alan & Kim Zimmerman <[hidden email]> wrote:

On 26 April 2018 at 10:47, Alex McLean <[hidden email]> wrote:
Hi all,

I'm wondering if anyone has made a 'block editor' for Haskell, i.e. a
syntax-aware text editor where you make a program by snapping together
type-compatible words, usually with a mouse. Something similar to
Scratch for example: https://scratch.mit.edu/

Any leads appreciated!

Best wishes

alex
_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.

_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.

_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.