miso: Haskell front-end framework

[ bsd3, data-structures, library, miso, web ] [ Propose Tags ]

Miso is a Haskell front-end framework featuring a virtual-dom, fast hand-rolled javascript diffing / patching algorithm, event delegation, event batching, SVG support, and an extensible Subscription-based subsystem. Inspired by Elm, Redux and Bobril, Miso currently supports WebSocket, Window, Mouse, History and KeysDown subscriptions. IO and other effects (such as XHR) can be introduced into the system via the Effect data type inside the update function. Pre-rendered templates and shared server-routing are made possible with servant. Minimal dependencies.


[Skip to Readme]

Modules

[Index]

Flags

Automatic Flags
NameDescriptionDefault
examples

Builds Miso's examples

Disabled
tests

Builds Miso's tests

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.0.4, 0.1.1.0, 0.1.2.0, 0.1.3.0, 0.1.4.0, 0.1.5.0, 0.2.0.0, 0.2.1.0, 0.3.0.0, 0.4.0.0, 0.5.0.0, 0.6.0.0, 0.7.0.0, 0.7.1.0, 0.7.2.0, 0.7.3.0, 0.7.4.0, 0.7.5.0, 0.7.6.0, 0.7.7.0, 0.7.8.0, 0.8.0.0, 0.9.0.0, 0.10.0.0, 0.11.0.0, 0.12.0.0, 0.13.0.0, 0.14.0.0, 0.15.0.0, 0.16.0.0, 0.17.0.0, 0.18.0.0, 0.19.0.0, 0.20.0.0, 0.20.1.0, 0.21.0.0, 0.21.1.0, 0.21.2.0, 1.0.0.0, 1.1.0.0, 1.2.0.0, 1.3.0.0, 1.4.0.0, 1.5.0.0, 1.5.1.0, 1.5.2.0, 1.6.0.0, 1.7.0.0, 1.7.1.0, 1.8.0.0, 1.8.1.0, 1.8.2.0, 1.8.3.0
Dependencies aeson, base (<5), bytestring, containers, ghcjs-base, hspec, hspec-core, lucid, miso, network-uri, scientific, servant, text, transformers, unordered-containers, vector [details]
License BSD-3-Clause
Copyright Copyright (c) 2016 David M. Johnson
Author David M. Johnson <djohnson.m@gmail.com>
Maintainer David M. Johnson <djohnson.m@gmail.com>
Category Web, Miso, Data Structures
Home page http://github.com/miso-haskell/miso
Source repo head: git clone https://github.com/dmjio/miso.git
Uploaded by DavidJohnson at 2017-06-27T01:31:48Z
Distributions LTSHaskell:1.8.3.0, NixOS:1.8.3.0
Reverse Dependencies 5 direct, 0 indirect [details]
Executables tests, simple, mario, todo-mvc
Downloads 33431 total (152 in the last 30 days)
Rating 2.25 (votes: 2) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2017-06-27 [all 1 reports]

Readme for miso-0.1.0.0

[back to package description]

🍜
miso

Hackage Haskell Programming Language BSD3 License Slack Status Build Status

Miso is a small isomorphic Haskell front-end framework featuring a virtual-dom, diffing / patching algorithm, event delegation, event batching, SVG, Server-sent events, Websockets, and an extensible Subscription-based subsystem. Inspired by Elm, Redux and Bobril. IO and other effects (like XHR) can be introduced into the system via the Effect data type. Miso makes heavy use of the GHCJS FFI and therefore has minimal dependencies.

Examples

Documentation

Getting Started

{-# LANGUAGE RecordWildCards #-}

module Main where

import Miso

type Model = Int

main :: IO ()
main = startApp App {..}
  where
    model  = 0
    update = updateModel
    view   = viewModel
    events = defaultEvents
    subs   = []

updateModel :: Action -> Model -> Effect Model Action
updateModel AddOne m = noEff (m + 1)
updateModel SubtractOne m = noEff (m - 1)

data Action
  = AddOne
  | SubtractOne
  deriving (Show, Eq)

viewModel :: Int -> View Action
viewModel x = div_ [] [
   button_ [ onClick AddOne ] [ text "+" ]
 , text (show x)
 , button_ [ onClick SubtractOne ] [ text "-" ]
 ]