{"id":13616868,"url":"https://github.com/rgleichman/glance","last_synced_at":"2025-04-04T23:09:01.917Z","repository":{"id":40685203,"uuid":"49032954","full_name":"rgleichman/glance","owner":"rgleichman","description":"A visual Haskell","archived":false,"fork":false,"pushed_at":"2022-03-20T20:40:39.000Z","size":918,"stargazers_count":723,"open_issues_count":4,"forks_count":15,"subscribers_count":34,"default_branch":"main","last_synced_at":"2025-03-28T22:13:39.705Z","etag":null,"topics":["cairo","diagrams","functional-programming","gdk","glance","graph-layout","graphviz","gtk","gtk3","haskell","visual","visual-programming","visual-programming-language"],"latest_commit_sha":null,"homepage":"https://www.youtube.com/channel/UCs2gsWfcy83Yqk873WkPfeg","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rgleichman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-01-05T01:04:01.000Z","updated_at":"2025-03-18T04:04:19.000Z","dependencies_parsed_at":"2022-08-10T00:40:45.488Z","dependency_job_id":null,"html_url":"https://github.com/rgleichman/glance","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgleichman%2Fglance","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgleichman%2Fglance/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgleichman%2Fglance/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgleichman%2Fglance/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rgleichman","download_url":"https://codeload.github.com/rgleichman/glance/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247261611,"owners_count":20910108,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cairo","diagrams","functional-programming","gdk","glance","graph-layout","graphviz","gtk","gtk3","haskell","visual","visual-programming","visual-programming-language"],"created_at":"2024-08-01T20:01:34.273Z","updated_at":"2025-04-04T23:09:01.885Z","avatar_url":"https://github.com/rgleichman.png","language":"Haskell","funding_links":[],"categories":["Haskell","Visual Programming with Nodes","Haskell ##"],"sub_categories":[],"readme":"[Link to project wiki](https://github.com/rgleichman/glance/wiki) (for mobile viewers)\n\nFor updates and coding livestreams check out the [Glance YouTube channel](https://www.youtube.com/channel/UCs2gsWfcy83Yqk873WkPfeg).\n\nAlso, check out [Only1Loatheb's fork](https://github.com/Only1Loatheb/glance/) which has a different visual style and an interactive mode.\n# Glance\nGlance 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.\n\nThe current Glance program is an experiment created to answer the question:  \n*Is it possible to create a readable and compact graphical representation of Haskell function and value declarations?*\n\nFor 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](https://github.com/rgleichman/glance/issues/new).\n\nThe 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](https://github.com/rgleichman/glance/issues/1). All contributions to any part of Glance are very much encouraged.\n\n## Try it\nFirst install Graphviz. For instance, in Ubuntu run:\n```\nsudo apt install graphviz\n```\n\nThen build and execute glance:\n```\nstack build :glance-exe\nstack exec glance-exe -- examples/fact.hs images/fact.svg 500\n```\nTo see the command line options run\n```\nstack exec glance-exe -- --help\n```\n\nNow display the SVG image in a web browser\n```\nfirefox --new-window images/fact.svg\n```\nYou 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.\n\n## Issues\nGlance 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:\n* Text may be misaligned with some SVG viewers.\n* [Images become very spread out when rendering medium to large functions](https://github.com/rgleichman/glance/issues/1).\n* Only a subset of Haskell is rendered.\n\n## To learn more\nTo learn more about the project after reading this README, please check out the [Glance wiki](../../wiki).\n\n## Getting started\nBelow is a getting started guide for Glance rendered by Glance itself ([source here](examples/tutorial.hs)). To generate this image run\n\n`stack exec glance-exe -- examples/tutorial.hs examples/tutorial.svg 873 -c`\n\n\u003cimg src=\"https://cdn.rawgit.com/rgleichman/glance/9d9862539dda7b7aceea33616816ac30ccf9b393/examples/tutorial.svg\" alt=\"Introduction to Glance\" /\u003e\n\nYou 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](../../wiki/Advantages-of-Glance).\n\n## Thanks\nA large thanks to the creators of [diagrams](http://projects.haskell.org/diagrams/), the main Haskell library used in this project.\n\nThank you to the [Santa Monica Haskell Users Group](https://www.meetup.com/santa-monica-haskell/) for their support and feedback.\n\nAlso thanks to the [/r/haskell](https://www.reddit.com/r/haskell/) subreddit for [reviewing a very early design of the language](https://www.reddit.com/r/haskell/comments/35swgl/review_my_introduction_to_glance_a_new_visual/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frgleichman%2Fglance","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frgleichman%2Fglance","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frgleichman%2Fglance/lists"}