Skip to content

mukeshsoni/frolic

Repository files navigation

Note - I have ported the backend of frolic into an atom plugin so that the editor experience is much better - https://atom.io/packages/elm-instant

Frolic

With Frolic, you can start typing expressions and immediately see results in the output panel without any glue code. Plus, it works for ui components too!

Features

  • Immediate feedback
  • Quick way for someone new to the language to try it out
  • Mix of ui components + normal expressions
  • Has around 38 packages built in (the list is below). E.g. Just do import Http and it will work.
  • Can load files from the disk and the dependencies will be resolves automatically
  • Can save playground code as a file. Also, when the code file is loaded in the future, the playground file automatically gets loaded with it. That way, you can think of the playground code as sort of clojurescript devcards.
  • Having multiple ui components to try out in same output window (like clojurescript devcards)

Elm counter pairs from elm-architechture examples

Frolic was inspired by haskell for mac, the idea is to have a playground panel where users can type out code expressions and see the result instantaneously without any setup. There is a similar thing currently for elm (elm-lang.org/try) but it has limited functionality and doesn't work without having the ui layer (model, view, update, main etc.).

The project is still in heavy development. You currently need to clone and run locally. Contributions and feedback are welcome!

Setup

npm install elm -g -- in case you don't have elm installed already
git clone https://github.com/mukeshsoni/frolic
npm install
npm run build
npm run start

Note To test out your views just copy whatever you would assign to main. E.g. if your code has -

main =
  Html.program
    { init = init
    , view = view
    , update = update
    , subscriptions = subscriptions
    }

copy this to the playground -

Html.program
  { init = init
  , view = view
  , update = update
  , subscriptions = subscriptions
  }

Packages included by default

  • elm-lang/animation-frame
  • elm-lang/core
  • elm-lang/dom
  • elm-lang/geolocation
  • elm-lang/html
  • elm-lang/keyboard
  • elm-lang/lazy
  • elm-lang/mouse
  • elm-lang/navigation
  • elm-lang/page-visibility
  • elm-lang/svg
  • elm-lang/trampoline
  • elm-lang/websocket
  • elm-lang/window
  • evancz/elm-http
  • evancz/elm-markdown
  • elm-community/undo-redo
  • elm-community/easing-functions
  • elm-community/elm-lazy-list
  • elm-community/elm-linear-algebra
  • elm-community/elm-material-icons
  • elm-community/elm-webgl
  • elm-community/graph
  • elm-community/intdict
  • elm-community/list-split
  • elm-community/html-extra
  • elm-community/json-extra
  • elm-community/maybe-extra
  • elm-community/random-extra
  • elm-community/result-extra
  • elm-community/string-extra
  • elm-community/svg-extra
  • elm-community/array-extra
  • elm-community/basics-extra
  • elm-community/dict-extra

Dev setup

npm install
npm install elm -g -- in case you don't have elm installed already
-- go to folder app/compilers/elm/temp/ and do
elm-package install -y
-- from the root folder run
npm run hot-server
npm run start-hot

Maintainers

License

MIT © Mukesh Soni

About

Learn elm faster and in a fun way

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •