[Haskell-cafe] Help to choose a library name

Alberto G. Corona agocorona at gmail.com
Wed Jun 29 11:22:13 UTC 2016


Hi Corentin,

2016-06-29 10:21 GMT+02:00 Corentin Dupont <corentin.dupont at gmail.com>:

> Hi Alberto,
>
>
> On Tue, Jun 28, 2016 at 10:04 AM, Alberto G. Corona <agocorona at gmail.com>
> wrote:
>
>> Corentin:
>>
>> Transient has the same behaviour than your reactive library. Your library
>> must produce two results if you press the first and then the second button,
>> (and more if you press them more times).
>>
>
> Actually no, in Nomyx the events, when they occur, are "consumed" and
> deleted (replaced by their result).
> So in the case of:
>
> True <$ inputButton "click here for True" <|> False <$ inputButton "click here for False"
>
> Once one of the buttons is clicked, both disappear and the result is
> produced.
> But it's merely a design choice I suppose...
>
>
>
>>
>> In the example, return "hello"  and return "world"  are two different
>> events that are triggered inmediately, and each one produces an output.
>>
>> The Transient EDSL for Web programming has the same behaviour than yours
>> and use the same <|>
>>
>> (submitButton "hello" `fire` OnClick)  <|> (submitButton "world"  `fire`
>> onClick)
>>
>> return either one or the other. But it can produce, like yours (I
>> suppose) two or more results, as many events as you trigger.
>>
>
> I like a lot Transient, I would have surely used it in Nomyx if it was
> around some years ago :)
> One question is, Transient seems a lot dependant on the IO monad, would it
> be possible to abstract from it?
>
>
> That is because Transient is though as general purpose language, not an
EDSL, so it has liftIO. But you can restrict it by creating your own EDSL
over it:

newtype EDSL a= EDSL{runEDSL :: TransIO a} deriving(Monad,Applicative...

and export your own primitives that limit the possible IO operations.

>
>
>>
>> 2016-06-28 0:31 GMT+02:00 Corentin Dupont <corentin.dupont at gmail.com>:
>>
>>> Wow, it is very impressive. I need to give it more time.
>>> I have one question regarding this example:
>>>
>>> main = keep $ do
>>>     th <- liftIO myThreadId                                   -- thread 89
>>>     r <- async (do threadDelay 1000000; return "hello")       -- thread 90
>>>          <|> async (return "world")                           -- thread 91
>>>     th' <- liftIO myThreadId                                  -- thread 90 and 91
>>>     liftIO $ print (th, th', r)                               -- thread 90 and 91
>>>
>>> Output:
>>>
>>> (ThreadId 89,ThreadId 91,"world")
>>> (ThreadId 89,ThreadId 90,"hello")
>>>
>>>
>>> For me it's counter-intuitive that there are two outputs. What is the
>>> reason behind?
>>> It seems that the use of the <|> affects the rest of the program.
>>> It looks strange to me because the two lines situated after the <|> does
>>> not look "syntactically" involved, if you see what I mean.
>>> Instead I was expecting only one output, with the first thread to finish
>>> "wins".
>>> In fact I implemented it like that:
>>> http://www.corentindupont.info/blog/posts/Programming/2014-09-23-Nomyx-Language.html#event-alternative-interface
>>>
>>> Cheers
>>> Corentin
>>>
>>>
>>> On Mon, Jun 27, 2016 at 8:22 PM, Geraldus <heraldhoi at gmail.com> wrote:
>>>
>>>> Sorry, here is some links:
>>>> Wiki paga on GitHub
>>>> https://github.com/agocorona/transient/wiki/Transient-tutorial
>>>> Programming at specification level
>>>> https://github.com/agocorona/transient/wiki/Programming-at-the-specification-level
>>>>
>>>> пн, 27 июн. 2016 г. в 23:19, Geraldus <heraldhoi at gmail.com>:
>>>>
>>>>> Hi!  Have you looked at Transient by Alberto Gomez Corona?
>>>>>
>>>>> пн, 27 июн. 2016 г. в 18:27, Corentin Dupont <
>>>>> corentin.dupont at gmail.com>:
>>>>>
>>>>>> Hi Joachim,
>>>>>> I agree... I looked hard at them :)
>>>>>> https://wiki.haskell.org/Functional_Reactive_Programming
>>>>>>
>>>>>> I need a library with a DSL able to create forms on the fly, in a
>>>>>> "demand driven" way.
>>>>>> I.e. if at some point in time the user program needs a boolean from
>>>>>> the user, a radio button will be created on the screen of that user. The
>>>>>> objective is to retrieve the boolean, creating the form is just a way to do
>>>>>> that. Complex forms can be created, capable of generating full ADTs. The
>>>>>> styling of the form is not important.
>>>>>> Other requirements:
>>>>>> - it should be possible to run the event DSL in a monad different
>>>>>> from IO.
>>>>>> - the event DSL need to be instance of Alternative: events can be put
>>>>>> in concurrence, the first to fire wins.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Jun 27, 2016 at 10:25 AM, Joachim Breitner <
>>>>>> mail at joachim-breitner.de> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> Am Montag, den 27.06.2016, 09:38 +0200 schrieb Corentin Dupont:
>>>>>>> > I need it for the game Nomyx, but couldn't find the features I
>>>>>>> wanted
>>>>>>> > from the existing libraries.
>>>>>>>
>>>>>>> any chance to extend existing libraries to support what you need?
>>>>>>> Library proliferation does not really help the ecosystem.
>>>>>>>
>>>>>>> Greetings,
>>>>>>> Joachim
>>>>>>> --
>>>>>>>
>>>>>>> Joachim “nomeata” Breitner
>>>>>>>   mail at joachim-breitner.dehttps://www.joachim-breitner.de/
>>>>>>>   XMPP: nomeata at joachim-breitner.de • OpenPGP-Key: 0xF0FBF51F
>>>>>>>   Debian Developer: nomeata at debian.org
>>>>>>> _______________________________________________
>>>>>>> Haskell-Cafe mailing list
>>>>>>> To (un)subscribe, modify options or view archives go to:
>>>>>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>>>>>>> Only members subscribed via the mailman list are allowed to post.
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Haskell-Cafe mailing list
>>>>>> To (un)subscribe, modify options or view archives go to:
>>>>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>>>>>> Only members subscribed via the mailman list are allowed to post.
>>>>>
>>>>>
>>>
>>
>>
>> --
>> Alberto.
>>
>
>


-- 
Alberto.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20160629/e6e8411b/attachment.html>


More information about the Haskell-Cafe mailing list