I would love to be able to make synchronous functional calls to js and get 
a Result back. 

Taking simple clean synchronous functional code (e.g. if it were all in 
Elm), and being forced to chop out bits into async calls with async Msg 
callbacks (just because it is not all in Elm) impacts my code in unpleasant 
ways: 

   1. weird async bugs: will my originally sync call to *layout(graph)* get 
   the layout answer back *after *the user has switched to another graph?
   2. pollution of model and update: 
      - I need to stuff into my model bits that were simple transient local 
      variables before, and maintain those extra bits everywhere in my code. 
      Forget to clear them somewhere, and chunks of my code like another update 
      branch or a view function, think I have a current graph waiting for a 
      layout.
      - I add more checks into my update to deal with possibly getting 
      intervening unrelated async inputs
      3. API bloat: why does *AndHereIsYourLayoutBack* need to be part of 
   my API, when that is already explicit through the outgoing call mechanism 
   (e.g. via something like a synchronous port, or some alternative)

I think #1 would be somewhat alleviated by synchronous tasks from this 
thread 
<https://groups.google.com/forum/?fromgroups#!topic/elm-discuss/ejv98qDe7Oo>, 
but #2 and #3 remain. 

Properly supporting this use case would be good for Elm. Sure, I could 
abuse it to call a stateful js api, causing problems if the Elm compiler 
moves expression evaluation order around, hence I use some *unsafe* marker 
either as an annotation to myself or to the compiler.


On Wednesday, December 14, 2016 at 4:48:06 AM UTC-6, Rupert Smith wrote:
>
>
>
> On Tuesday, December 13, 2016 at 3:42:23 PM UTC, Joey Eremondi wrote:
>>
>> the elm package repo would very quickly get poluted with js code that 
>>> causes runtime exceptions
>>
>>
>> But, Tasks have error handling built into them. We could do something 
>> similar with synchronous code, just catch any exceptions thrown, and treat 
>> the value in Elm as something like a Result.
>>
>
> > the elm package repo would very quickly get poluted with js code that 
> causes runtime exceptions _* and is not portable *_
>
> Result would work, but the not portable bit is equally impoertant.
>  
>

-- 
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to