All Projects → rgleichman → Glance

rgleichman / Glance

Licence: apache-2.0
A visual Haskell

Programming Languages

haskell
3896 projects

Projects that are alternatives of or similar to Glance

Terminal
Terminal emulator designed for elementary OS
Stars: ✭ 281 (-54.68%)
Mutual labels:  gtk, gtk3
Dotfiles
Sway acid dark
Stars: ✭ 330 (-46.77%)
Mutual labels:  gtk, gtk3
Node Gtk
GTK+ bindings for NodeJS (via GObject introspection)
Stars: ✭ 287 (-53.71%)
Mutual labels:  gtk, gtk3
nicotine-plus
Graphical client for the Soulseek peer-to-peer network
Stars: ✭ 601 (-3.06%)
Mutual labels:  gtk, gtk3
Sunflower
Small and highly customizable twin-panel file manager for Linux with support for plugins.
Stars: ✭ 347 (-44.03%)
Mutual labels:  gtk, gtk3
principles
Remember Dieter Rams' ten principles of good design on elementary OS
Stars: ✭ 38 (-93.87%)
Mutual labels:  gtk, gtk3
Code
Code editor designed for elementary OS
Stars: ✭ 324 (-47.74%)
Mutual labels:  gtk, gtk3
wingpanel-indicator-bluetooth
Wingpanel Bluetooth Indicator
Stars: ✭ 18 (-97.1%)
Mutual labels:  gtk, gtk3
Xi Gtk
a GTK front-end for the Xi editor
Stars: ✭ 338 (-45.48%)
Mutual labels:  gtk, gtk3
Gradio
Stars: ✭ 335 (-45.97%)
Mutual labels:  gtk, gtk3
switchboard-plug-bluetooth
Switchboard Bluetooth Plug
Stars: ✭ 23 (-96.29%)
Mutual labels:  gtk, gtk3
Celluloid
A simple GTK+ frontend for mpv
Stars: ✭ 541 (-12.74%)
Mutual labels:  gtk, gtk3
tasks
Synced tasks and reminders on elementary OS
Stars: ✭ 79 (-87.26%)
Mutual labels:  gtk, gtk3
wingpanel-indicator-network
Wingpanel Network Indicator
Stars: ✭ 22 (-96.45%)
Mutual labels:  gtk, gtk3
switchboard-plug-display
Switchboard Displays Plug
Stars: ✭ 14 (-97.74%)
Mutual labels:  gtk, gtk3
Wdisplays
GUI display configurator for wlroots compositors
Stars: ✭ 302 (-51.29%)
Mutual labels:  gtk, gtk3
shortcut-overlay
A native, OS-wide shortcut overlay
Stars: ✭ 26 (-95.81%)
Mutual labels:  gtk, gtk3
Lua-GTK3-Examples
Some GTK examples in Lua
Stars: ✭ 20 (-96.77%)
Mutual labels:  gtk, gtk3
Eww
ElKowar's wacky widgets
Stars: ✭ 322 (-48.06%)
Mutual labels:  gtk, gtk3
Appcenter
Pay-what-you-want app store for elementary OS
Stars: ✭ 358 (-42.26%)
Mutual labels:  gtk, gtk3

Link to project wiki (for mobile viewers)

For updates and coding livestreams check out the Glance YouTube channel.

Glance

Glance is a visual syntax for the programming language Haskell. The goal of this project is to increase programmer happiness and productivity by allowing programmers to create and understand programs in new and different ways. Currently, the Glance executable produces a visual representation of your code in the form of an SVG image when given a textual Haskell source file. In the future, I hope to create a visual editor for Haskell. Please scroll down to see some example images.

The current Glance program is an experiment created to answer the question:
Is it possible to create a readable and compact graphical representation of Haskell function and value declarations?

For small to medium functions, in my opinion Glance produces images good enough to indicate that the answer is yes. For large functions, the results right now are inconclusive due to issues with graph layout. Specifically, large programs unnecessarily become very spread out. If you have any ideas about how to improve Glance, please create an issue.

The next steps for the project are to improve graph layout, and then to start work on a visual editor. If you would like to help and have any knowledge about graph layout, please make a comment on this issue. All contributions to any part of Glance are very much encouraged.

Try it

First install Graphviz. For instance, in Ubuntu run:

sudo apt install graphviz

Then build and execute glance:

stack build :glance-exe
stack exec glance-exe -- examples/fact.hs images/fact.svg 500

To see the command line options run

stack exec glance-exe -- --help

Now display the SVG image in a web browser

firefox --new-window images/fact.svg

You should now see in your browser window a visual representation of the factorial function. Next, you will probably want to read the Getting Started guide below to help understand the images Glance generates.

Issues

Glance is still in development, so for the time being, graph layout, line routing, and icon design all have much room for improvement. Here are some specific issues:

To learn more

To learn more about the project after reading this README, please check out the Glance wiki.

Getting started

Below is a getting started guide for Glance rendered by Glance itself (source here). To generate this image run

stack exec glance-exe -- examples/tutorial.hs examples/tutorial.svg 873 -c

Introduction to Glance

You should now be able to understand Glance's visual syntax. If you would like to see how visual code might be an improvement over textual code, or if you just want to see more examples, please take a look at the Glance wiki page Advantages of Glance.

Thanks

A large thanks to the creators of diagrams, the main Haskell library used in this project.

Thank you to the Santa Monica Haskell Users Group for their support and feedback.

Also thanks to the /r/haskell subreddit for reviewing a very early design of the language.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].