{"id":13682125,"url":"https://github.com/viskell/viskell","last_synced_at":"2025-04-30T07:30:37.577Z","repository":{"id":26784775,"uuid":"30242992","full_name":"viskell/viskell","owner":"viskell","description":"Visual programming meets Haskell","archived":false,"fork":false,"pushed_at":"2017-04-19T22:14:33.000Z","size":7121,"stargazers_count":679,"open_issues_count":22,"forks_count":29,"subscribers_count":44,"default_branch":"master","last_synced_at":"2024-08-02T13:33:39.476Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/viskell.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":"2015-02-03T13:04:49.000Z","updated_at":"2024-07-23T17:43:29.000Z","dependencies_parsed_at":"2022-08-07T12:00:57.856Z","dependency_job_id":null,"html_url":"https://github.com/viskell/viskell","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viskell%2Fviskell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viskell%2Fviskell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viskell%2Fviskell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viskell%2Fviskell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/viskell","download_url":"https://codeload.github.com/viskell/viskell/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224201884,"owners_count":17272658,"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":[],"created_at":"2024-08-02T13:01:41.093Z","updated_at":"2024-11-12T01:31:12.337Z","avatar_url":"https://github.com/viskell.png","language":"Java","readme":"# Viskell\n\n[![Build Status](https://travis-ci.org/viskell/viskell.svg?branch=master)](https://travis-ci.org/viskell/viskell)\n\nViskell is an experimental visual programming environment for a typed (Haskell-like) functional programming language.\nThis project is exploring the possibilities and challenges of interactive visual programming in combination with the strengths and weaknesses of functional languages.\n\n![Screenshot](screenshot.png)\n\nWhile many visual programming languages/environments exist, they are often restricted to some application domain or a specific target audience.\nThe potential of advanced type systems and higher level abstractions in visual programming has barely been explored yet.\n\n### Background information\n[Short project overview presentation](viskell-nlfpday.pdf) as given on the Dutch Functional Programming Day of Jan 8, 2016.\n\n### Goals and focus points\n\n  * Creating readable and compact visualisations for functional language constructs.\n  * Immediate feedback on every program modification, avoiding the slow edit-compile-debug cycle.\n  * Experimenting with a multi-touch focused user interface, supporting multiple independently acting hands.\n  * Type-guided development: program fragments show their types, and type error are locally visualised.\n  * Raising the level of abstraction (good support for higher order functions and other common Haskell abstractions).\n  * Addressing the scalability issues common to creating large visual programs.\n\n### Status\n\nViskell is not yet usable for anything practical, however suggestions from curious souls are very welcome.\nWhile being nowhere near a complete programming language, most basic features have an initial implementation.\nEvery aspect of the design and implementation is still work in progress, but ready for demonstration purposes and giving an impression of its potential.\n\n### Building Viskell\n\nTo build an executable `.jar` file that includes dependencies, check out this repository, then run\n\n    mvn package\n\nJava(FX) 8u40 or newer, GHC and QuickCheck are required. Importing as a Maven project into any Java IDE should also work.\n\nYou can also download [the latest release](https://github.com/viskell/viskell/releases/download/nlfp-day-demo/viskell-0.1.jar) or a [the latest bleeding-edge build](https://twnc.org/viskell/latest/viskell-0.1-jar-with-dependencies.jar).\n\n#### Using the touch interface (and the mouse alternatives)\n * Moving a block: dragging by one finger (or primary mouse button)\n * Making a connection: draw with one finger from a connection point to another (or with primary mouse button)\n * Open function menu: two finger tap on a background area (or click by secondary mouse button)\n * Open context menu: two finger tap on the non transparent parts of a block (or click by secondary mouse button)\n * Panning an area: two finger drag on background area (or drag with secondary mouse button)\n * Cut a connection: draw a line across and trace it back to it starting point, by one finger (or primary mouse button)\n * Wire context menu: while drawing a connection tap a second finger next to it (or click by secondary mouse button)\n * Curry a function: on an orange function block drag down the type label by one finger (or primary mouse button)\n * Splitting a wire based on type: while drawing a connection put down a finger next to it and pull them apart in either horizontal or vertical direction (this action is work in progress and has no mouse alternative yet)\n\n##### FAQ\n\n* Why is the implementation in Java 8/JavaFX?\n  * It was considered the least problematic option at the start of this project.\n    Haskell unfortunately lacks suitable GUI libraries, and we need good multi-touch support (3+ independently moving touchpoints) that is also cross platform.\n    And secondly not all of the initial contributors were experienced with Haskell.\n    Eventually we want to transition to a browser based GUI combined with Haskell on a local server.\n","funding_links":[],"categories":["Java","Resources","Structural code editor projects"],"sub_categories":["[Elm](http://elm-lang.org)","Concluded or inactive projects"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviskell%2Fviskell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fviskell%2Fviskell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviskell%2Fviskell/lists"}