Giter Site home page Giter Site logo

keera-studios / keera-hails Goto Github PK

View Code? Open in Web Editor NEW
189.0 189.0 12.0 1.41 MB

Keera Hails: Haskell on Rails - Reactive Programming Framework for Interactive Haskell applications

License: Other

Haskell 100.00%
android frp functional-reactive-programming ghcjs gtk haskell ios mvc qt reactive-values rvs web wx yampa

keera-hails's People

Contributors

bardurarantsson avatar craigtreptow avatar ivanperez-keera avatar jeffslofish avatar myroslambda avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

keera-hails's Issues

File name overlap hlint.hs/HLint.hs

Multiple packages in this repo contain an hlint.hs and an HLint.hs under tests/.

The difference between uppercase and lowercase names is frequent on linux, but not on mac or windows. This would make it very hard to use these projects on those architectures, and would confuse cabal and git.

These files should be named differently. The cabal file needs to be adapted accordingly.

Not in scope: type constructor or class ‘PlugClass’

Trying to compile haskell-titan on MacOSX with GHC 8.6, I get the following error:

Building library for keera-hails-reactive-gtk-0.3..
[ 1 of 19] Compiling Graphics.UI.Gtk.Reactive.Button ( src/Graphics/UI/Gtk/Reactive/Button.hs, dist/dist-sandbox-f8907eaf/build/Graphics/UI/Gtk/Reactive/Button.o )

src/Graphics/UI/Gtk/Reactive/Button.hs:13:1: warning: [-Worphans]
    Orphan instance: instance ReactiveValueActivatable IO Button
    To avoid this
        move the instance declaration to the module of the class or of the type, or
        wrap the type with a newtype and declare the instance on the new type.
   |
13 | instance ReactiveValueActivatable IO Button where
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
[ 2 of 19] Compiling Graphics.UI.Gtk.Reactive.CheckMenuItem ( src/Graphics/UI/Gtk/Reactive/CheckMenuItem.hs, dist/dist-sandbox-f8907eaf/build/Graphics/UI/Gtk/Reactive/CheckMenuItem.o )
[ 3 of 19] Compiling Graphics.UI.Gtk.Reactive.MenuItem ( src/Graphics/UI/Gtk/Reactive/MenuItem.hs, dist/dist-sandbox-f8907eaf/build/Graphics/UI/Gtk/Reactive/MenuItem.o )

src/Graphics/UI/Gtk/Reactive/MenuItem.hs:14:1: warning: [-Worphans]
    Orphan instance: instance ReactiveValueActivatable IO MenuItem
    To avoid this
        move the instance declaration to the module of the class or of the type, or
        wrap the type with a newtype and declare the instance on the new type.
   |
14 | instance ReactiveValueActivatable IO MenuItem where
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
[ 4 of 19] Compiling Graphics.UI.Gtk.Reactive.Property ( src/Graphics/UI/Gtk/Reactive/Property.hs, dist/dist-sandbox-f8907eaf/build/Graphics/UI/Gtk/Reactive/Property.o )

src/Graphics/UI/Gtk/Reactive/Property.hs:125:21: warning: [-Wname-shadowing]
    This binding for ‘set’ shadows the existing binding
      imported from ‘Graphics.UI.Gtk’ at src/Graphics/UI/Gtk/Reactive/Property.hs:7:1-22
      (and originally defined in ‘System.Glib.Attributes’)
    |
125 | passivePropertyGE e set get =
    |                     ^^^

src/Graphics/UI/Gtk/Reactive/Property.hs:125:25: warning: [-Wname-shadowing]
    This binding for ‘get’ shadows the existing binding
      imported from ‘Graphics.UI.Gtk’ at src/Graphics/UI/Gtk/Reactive/Property.hs:7:1-22
      (and originally defined in ‘System.Glib.Attributes’)
    |
125 | passivePropertyGE e set get =
    |                         ^^^
[ 5 of 19] Compiling Graphics.UI.Gtk.Reactive.Label ( src/Graphics/UI/Gtk/Reactive/Label.hs, dist/dist-sandbox-f8907eaf/build/Graphics/UI/Gtk/Reactive/Label.o )

src/Graphics/UI/Gtk/Reactive/Label.hs:14:1: warning: [-Worphans]
    Orphan instance: instance ReactiveValueReadWrite Label String IO
    To avoid this
        move the instance declaration to the module of the class or of the type, or
        wrap the type with a newtype and declare the instance on the new type.
   |
14 | instance ReactiveValueReadWrite Label String IO where
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Graphics/UI/Gtk/Reactive/Label.hs:16:1: warning: [-Worphans]
    Orphan instance: instance ReactiveValueRead Label String IO
    To avoid this
        move the instance declaration to the module of the class or of the type, or
        wrap the type with a newtype and declare the instance on the new type.
   |
16 | instance ReactiveValueRead Label String IO where
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...

src/Graphics/UI/Gtk/Reactive/Label.hs:20:1: warning: [-Worphans]
    Orphan instance: instance ReactiveValueWrite Label String IO
    To avoid this
        move the instance declaration to the module of the class or of the type, or
        wrap the type with a newtype and declare the instance on the new type.
   |
20 | instance ReactiveValueWrite Label String IO where
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
[ 6 of 19] Compiling Graphics.UI.Gtk.Reactive.Image ( src/Graphics/UI/Gtk/Reactive/Image.hs, dist/dist-sandbox-f8907eaf/build/Graphics/UI/Gtk/Reactive/Image.o )

src/Graphics/UI/Gtk/Reactive/Image.hs:9:1: warning: [-Wunused-imports]
    The import of ‘Graphics.UI.Gtk.Reactive.Property’ is redundant
      except perhaps to import instances from ‘Graphics.UI.Gtk.Reactive.Property’
    To import instances alone, use: import Graphics.UI.Gtk.Reactive.Property()
  |
9 | import Graphics.UI.Gtk.Reactive.Property
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Graphics/UI/Gtk/Reactive/Image.hs:14:1: warning: [-Worphans]
    Orphan instance: instance ReactiveValueWrite Image String IO
    To avoid this
        move the instance declaration to the module of the class or of the type, or
        wrap the type with a newtype and declare the instance on the new type.
   |
14 | instance ReactiveValueWrite Image String IO where
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
[ 7 of 19] Compiling Graphics.UI.Gtk.Reactive.Gtk2 ( src/Graphics/UI/Gtk/Reactive/Gtk2.hs, dist/dist-sandbox-f8907eaf/build/Graphics/UI/Gtk/Reactive/Gtk2.o )

src/Graphics/UI/Gtk/Reactive/Gtk2.hs:3037:25: error:
    Not in scope: type constructor or class ‘PlugClass’
     |
3037 | plugEmbeddedReactive :: PlugClass self => self -> ReactiveFieldRead IO ()
     |                         ^^^^^^^^^

src/Graphics/UI/Gtk/Reactive/Gtk2.hs:3042:27: error:
    Not in scope: type constructor or class ‘PlugClass’
     |
3042 | plugGetEmbeddedPassive :: PlugClass self => (self) -> ReactiveFieldRead IO (Bool)
     |                           ^^^^^^^^^

src/Graphics/UI/Gtk/Reactive/Gtk2.hs:3047:21: error:
    Not in scope: type constructor or class ‘PlugClass’
     |
3047 | plugGetIdPassive :: PlugClass self => (self) -> ReactiveFieldRead IO (NativeWindowId)
     |                     ^^^^^^^^^

src/Graphics/UI/Gtk/Reactive/Gtk2.hs:3052:31: error:
    Not in scope: type constructor or class ‘PlugClass’
     |
3052 | plugGetSocketWindowPassive :: PlugClass self => (self) -> ReactiveFieldRead IO ((Maybe DrawWindow))
     |                               ^^^^^^^^^

src/Graphics/UI/Gtk/Reactive/Gtk2.hs:3057:27: error:
    Not in scope: type constructor or class ‘SocketClass’
     |
3057 | afterPlugAddedReactive :: SocketClass self => self -> ReactiveFieldRead IO ()
     |                           ^^^^^^^^^^^

src/Graphics/UI/Gtk/Reactive/Gtk2.hs:3061:29: error:
    Not in scope: type constructor or class ‘SocketClass’
     |
3061 | afterPlugRemovedReactive :: SocketClass self => self -> ReactiveFieldRead IO ()
     |                             ^^^^^^^^^^^

src/Graphics/UI/Gtk/Reactive/Gtk2.hs:3065:24: error:
    Not in scope: type constructor or class ‘SocketClass’
     |
3065 | onPlugAddedReactive :: SocketClass self => self -> ReactiveFieldRead IO ()
     |                        ^^^^^^^^^^^

src/Graphics/UI/Gtk/Reactive/Gtk2.hs:3069:26: error:
    Not in scope: type constructor or class ‘SocketClass’
     |
3069 | onPlugRemovedReactive :: SocketClass self => self -> ReactiveFieldRead IO ()
     |                          ^^^^^^^^^^^

src/Graphics/UI/Gtk/Reactive/Gtk2.hs:3073:23: error:
    Not in scope: type constructor or class ‘SocketClass’
     |
3073 | socketGetIdPassive :: SocketClass self => (self) -> ReactiveFieldRead IO (NativeWindowId)
     |                       ^^^^^^^^^^^

src/Graphics/UI/Gtk/Reactive/Gtk2.hs:3078:31: error:
    Not in scope: type constructor or class ‘SocketClass’
     |
3078 | socketGetPlugWindowPassive :: SocketClass self => (self) -> ReactiveFieldRead IO ((Maybe DrawWindow))
     |                               ^^^^^^^^^^^

src/Graphics/UI/Gtk/Reactive/Gtk2.hs:3083:28: error:
    Not in scope: type constructor or class ‘SocketClass’
     |
3083 | socketPlugAddedReactive :: SocketClass self => self -> ReactiveFieldRead IO ()
     |                            ^^^^^^^^^^^
cabal: Leaving directory '/var/folders/mj/_59m6kx170d40r37x8lv0gs00000gq/T/cabal-tmp-14426/keera-hails-reactive-gtk-0.3'

Couldn't match type ‘model’ with ‘Maybe model0’ on GHC 8.4.3 and gtk-0.14.10

If I run cabal install keera-hails-reactive-gtk-0.3 with ghc 8.4.3, installation of that package fails with

src/Graphics/UI/Gtk/Reactive/Gtk2.hs:8067:30: error:
• Couldn't match type ‘model’ with ‘Maybe model0’
‘model’ is a rigid type variable bound by
the type signature for:
treeViewSetModelReactive :: forall self model.
(TreeViewClass self, TreeModelClass model) =>
self -> ReactiveFieldWrite IO model
at src/Graphics/UI/Gtk/Reactive/Gtk2.hs:8066:1-113
Expected type: ReactiveFieldWrite IO model
Actual type: ReactiveFieldWrite IO (Maybe model0)
• In the expression: wrapMW (treeViewSetModel w)
In an equation for ‘treeViewSetModelReactive’:
treeViewSetModelReactive w = wrapMW (treeViewSetModel w)
• Relevant bindings include
treeViewSetModelReactive :: self -> ReactiveFieldWrite IO model
(bound at src/Graphics/UI/Gtk/Reactive/Gtk2.hs:8067:1)
|
8067 | treeViewSetModelReactive w = wrapMW (treeViewSetModel w)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^

Eliminate all sources.txt files

Files named sources.txt are related to an old build tool that is no longer used in Haskell and no longer serve any purpose.

Could not deduce (DrawWindowClass d) in drawableGetIDPassive

I am currently getting the following error message compiling on Mac:

[ 7 of 19] Compiling Graphics.UI.Gtk.Reactive.Gtk2 ( src/Graphics/UI/Gtk/Reactive/Gtk2.hs, dist/dist-sandbox-eaed1e6b/build/Graphics/UI/Gtk/Reactive/Gtk2.o )

src/Graphics/UI/Gtk/Reactive/Gtk2.hs:4462:41: error:
    • Could not deduce (DrawWindowClass d)
        arising from a use of ‘drawableGetID’
      from the context: DrawableClass d
        bound by the type signature for:
                   drawableGetIDPassive :: forall d.
                                           DrawableClass d =>
                                           d -> ReactiveFieldRead IO NativeWindowId
        at src/Graphics/UI/Gtk/Reactive/Gtk2.hs:4461:1-87
      Possible fix:
        add (DrawWindowClass d) to the context of
          the type signature for:
            drawableGetIDPassive :: forall d.
                                    DrawableClass d =>
                                    d -> ReactiveFieldRead IO NativeWindowId
    • In the first argument of ‘wrapMRPassive’, namely
        ‘(drawableGetID w)’
      In the expression: wrapMRPassive (drawableGetID w)
      In an equation for ‘drawableGetIDPassive’:
          drawableGetIDPassive w = wrapMRPassive (drawableGetID w)
     |
4462 | drawableGetIDPassive w = wrapMRPassive (drawableGetID w)

What can I do?

Cannot compile minimal example in WX

The minimal example included with the wx backend fails to compile:

$ cabal exec -- ghc --make  keera-hails/keera-hails-reactive-wx/examples/Minimal.hs 
[1 of 1] Compiling Main             ( keera-hails/keera-hails-reactive-wx/examples/Minimal.hs, keera-hails/keera-hails-reactive-wx/examples/Minimal.o )

keera-hails/keera-hails-reactive-wx/examples/Minimal.hs:28:20: error:
    • Couldn't match type ‘[Char]’ with ‘() -> [Char]’
      Expected type: [Char] -> () -> [Char]
        Actual type: [Char] -> [Char]
    • In the first argument of ‘modRW’, namely ‘((++ "a"))’
      In the second argument of ‘(=:>)’, namely ‘modRW ((++ "a")) txt2T’
      In a stmt of a 'do' block: btnC =:> modRW ((++ "a")) txt2T
   |
28 |   btnC =:> modRW ((++ "a")) txt2T

Seamless combination of RVs and Rules with ReaderT r IO

The following construction is very common:

installRule cenv = do
  f <- someFieldOfAnUIElement <$> someUIElement (uiBuilder (view cenv))
  let f2 - someFieldOfTheModel (model cenv))

 f =:= f2

The cenv is being passed around. Ideally, we'd want to write:

installRule =
  (someFieldOfAnUIElement . someUIElement) =:= someFieldOfTheModel

An initial approximation would be possible if we make RVs and RRs run on a reader monad with cenv in the environment. Some additional modifications would be necessary to make model and uiBuilder.view somehow implicit, and to make the (<$>) go away.

Is the .hackage file necessary?

There is a .hackage file in the repo.

I do not find any evidence that this file is being used anywhere.

Should it be removed?

Upload a new version of keera-hails-reactive-gtk to Hackage

The problem pointed out in #8 has been corrected by commit bd7019f. But, the fixed library has not been uploaded to Hackage (last upload was in 2015), meaning the Hackage version still does not compile with the current version of the gtk library (0.15.2).

It would be nice if a new version was uploaded that contained the fix :)

Copy basic demo into demos folder

It would be useful to have the trivial demo just added to the library in e22c0bf#diff-f247725f39b33ecfb58291261d453171 copied also as a separate example in the demos/ folder, with its own cabal file, and potentially installed in travis (but not deployed to hackage).

This would make it easier for people to start with Hails, and would ensure that everything keeps working.

Improve support for GTK3

Support for GTK3 right now is lacking. We cannot create complex applications with GTK3 wtihout a lot of boilerplate.

Because this is already done in GTK2, it should be trivial to port to GTK3.

Review licenses and copyright notices

Everything produced at/for/by Keera has copyright Keera Studios. All software, talks, pages, papers, public or private, released or under development, need to have clear copyright and usage licenses.

Repo contains useless .hgignore

This repo contains an .hgignore file which does not belong as we are using git.

My guess is that this was once a mercurial repository and that was never seen or removed.

Failure to compile due to missing dependency

We are getting this on travis:

Building keera-hails-reactive-network-0.0.3.3...
Preprocessing library keera-hails-reactive-network-0.0.3.3...
[1 of 1] Compiling Hails.Network    ( src/Hails/Network.hs, dist/dist-sandbox-d9da2abf/build/Hails/Network.o )
src/Hails/Network.hs:5:1: error:
    Failed to load interface for ‘Network.BSD’
    It is a member of the hidden package ‘network-bsd-2.8.1.0’.
    Perhaps you need to add ‘network-bsd’ to the build-depends in your .cabal file.
    Use -v to see a list of the files searched for.
cabal: Leaving directory '/home/travis/build/keera-studios/keera-hails/keera-hails-reactive-network'

keera-hails-reactivevalues-0.2.2.0 test suite failures

Citing from http://hydra.cryp.to/build/1377268/nixlog/1/raw:

Test suite hlint: RUNNING...
src/Data/ReactiveValue.hs:230:3: Error: Eta reduce
Found:
  reactiveValueWrite (_, f) v = reactiveValueWrite f v
Why not:
  reactiveValueWrite (_, f) = reactiveValueWrite f

1 suggestion (5 ignored)
Test suite hlint: FAIL

and

Test suite haddock-coverage: RUNNING...
haddock-coverage: cabal: readCreateProcessWithExitCode: runInteractiveProcess: exec: does not exist (No such file or directory)
Test suite haddock-coverage: FAIL

Travis compilation fails due to wrong packages and path

The deployment on travis fails due to packages being invalid and a path being incorrect:

+cd keera-hails-mvc-model-protectedmodel
+cabal check
These warnings may cause trouble when distributing the package:
* 'ghc-options: -O2' is rarely needed. Check that it is giving a real benefit
and not just imposing longer compile times on your users.
+cabal sdist
Distribution quality warnings:
'ghc-options: -O2' is rarely needed. Check that it is giving a real benefit
and not just imposing longer compile times on your users.
Warning: Cannot run preprocessors. Run 'configure' command first.
Building source dist for keera-hails-mvc-model-protectedmodel-0.0.3.5...
Source tarball created:
dist/keera-hails-mvc-model-protectedmodel-0.0.3.5.tar.gz
+cabal upload dist/keera-hails-mvc-model-protectedmodel-0.0.3.5.tar.gz
Uploading dist/keera-hails-mvc-model-protectedmodel-0.0.3.5.tar.gz...
Error uploading dist/keera-hails-mvc-model-protectedmodel-0.0.3.5.tar.gz: http
code 400
Error: Invalid package

And also:

cd keera-hails-reactive-etwork
sh: 1: cd: can't cd to keera-hails-reactive-etwork

Improve the story regarding dialogs

Certain reactive constructs like dialogs do not yet integrate well with RVs.

An example, from https://github.com/keera-studios/haskell-titan/blob/develop/titan-gui/src/Controller/Conditions/Buttons.hs#L89, is:

installConditionLoadTrace cenv = void $ do
  btn <- toolButtonActivateField <$> toolBtnLoadTrace (uiBuilder (view cenv))
  btn =:> conditionVMLoadTrace cenv

conditionVMLoadTrace :: CEnv -> IO ()
conditionVMLoadTrace cenv = do
  window <- mainWindow (uiBuilder (view cenv))
  fch <- fileChooserDialogNew (Just "Open Yampa trace") Nothing
                              FileChooserActionOpen
                              [("Cancel", ResponseCancel),
                               ("Load", ResponseAccept)]

  ytrfilt <- fileFilterNew
  fileFilterAddPattern ytrfilt "*.ytr"
  fileFilterSetName ytrfilt "Yampa Trace"
  fileChooserAddFilter fch ytrfilt

  nofilt <- fileFilterNew
  fileFilterAddPattern nofilt "*.*"
  fileFilterSetName nofilt "All Files"
  fileChooserAddFilter fch nofilt

  widgetShow fch
  response <- dialogRun fch
  fp <- case response of
          ResponseCancel -> putStrLn "You cancelled..." >> return Nothing
          ResponseAccept -> do nwf <- fileChooserGetFilename fch
                               case nwf of
                                 Nothing   -> putStrLn "Nothing" >> return Nothing
                                 Just path -> putStrLn ("New file path is:\n" ++ path) >> return (Just path)
          ResponseDeleteEvent -> putStrLn "You closed the dialog window..." >> return Nothing

  widgetDestroy fch
  awhen fp $ \p -> do
    contents <- readFile p
    sendToYampaSocketAsync (extra cenv) (show (LoadTraceFromString contents))

Instead, one could think of this dialog as a sort-of fudget or reactive processor. If synced, it could be described with something like:

(toolButtonActivateField . toolBtnLoadTrace) =>= openFileDialog =>= loadFile  =:> sendNewTrace

Failure to compile due to missing sendTo

The function sendTo is no longer available on network 3.*. This stops
keera-hails-reactive-network from compiling:

Preprocessing library keera-hails-reactive-network-0.1...
[1 of 1] Compiling Hails.Network    ( src/Hails/Network.hs, dist/dist-sandbox-d9da2abf/build/Hails/Network.o )
src/Hails/Network.hs:21:33: error:
    • Variable not in scope:
        sendTo :: Socket -> String -> SockAddr -> IO Integer
    • Perhaps you meant ‘sendFd’ (imported from Network.Socket)

Include sample application built with keera-hails

One of the packages provided by this library is keera-hails, which lets users build sample applications. This package is not documented, so it is unlikely that any users have been able to use it as is.

A minimal readme would help newcomers see an app running on the screen with very little effort.

Subissue of #7 .

gtk2 function notebookGetCurrentPagePassive

The notebookGetCurrentPagePassive function returns -1 in my program.

Create a new notebook n
n <- notebookNew
Define notebookGetCurrentPagePassive as the getter of curPageRV
let curPageRV = ReactiveFieldReadWrite setter getter notifier where (ReactiveFieldRead getter _) = notebookGetCurrentPagePassive n setter = postGUIAsync . notebookSetCurrentPage n notifier io = void $ afterSwitchPage n (const io)
When the current page is deleted and reactiveValueRead curPageRV is called, sometimes it will return -1.
reactiveValueRead curPageRV >>= print
When the current page is deleted, will notebookGetCurrentPagePassive always return -1? How does this function show the passive effect?

Connect dunai and Keera Hails

The reactive programming library dunai can be used to run reactive applications.

Hails applications could connect to those dunai applications by turning the former into MSFs, or the latter into RVs.

We need examples of this.

Improve README

The readme should include examples of how reactive values can be created, manipulated, and connected, including how to create connections to Gtk/Wx/HTML or maybe Yampa stuff.

[keera-hails-reactive-fs] Couldn't match type ‘FilePath’ with ‘[Char]'

src/Hails/FS.hs:42:20:

    Couldn't match type ‘FilePath’ with ‘[Char]’

    Expected type: GHC.IO.FilePath

      Actual type: FilePath

    In the second argument of ‘watchDir’, namely ‘(directory fp)’

    In a stmt of a 'do' block:

      _ <- watchDir

             mgr

             (directory fp)

             (\ e -> encodeString (eventPath e) == fpP)

             (const notify)

src/Hails/FS.hs:43:40:

    Couldn't match type ‘[Char]’ with ‘FilePath’

    Expected type: FilePath

      Actual type: GHC.IO.FilePath

    In the first argument of ‘encodeString’, namely ‘(eventPath e)’

    In the first argument of ‘(==)’, namely

      ‘encodeString (eventPath e)’

cabal: Leaving directory '/tmp/cabal-tmp-5631/keera-hails-reactive-fs-0.0.3.4'

Cleaning cabal files

This project is hard to maintain due to being formed of many smaller packages.

We want to make the cabal packages as uniform as possible.

keera-hails-mvc-model-lightmodel: build on hackage failed

The build on hackage failed with the following message:

src/Hails/MVC/Model/ProtectedModel/Reactive.hs:66:50:
Expecting one more argument to ‘ReactiveFieldReadWrite a’
Expected a type, but ‘ReactiveFieldReadWrite a’ has kind ‘* -> *’
In the type ‘ProtectedModel b c -> ReactiveFieldReadWrite a’
In the type declaration for ‘FieldAccessor’

Update versions of GHC on travis

Currently, hails is failing to compile on Travis due togtk2hs-buildtools not building with GHC 8.0. Additionally it is not trying to compile with modern versions of GHC.

keera-hails contains unused files

The library keera-hails contains unused files in src/.

Many of those files appear to exist in other libraries, so I do not understand why they are included in keera-hails. I think they should be removed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.