Monads can be used to track effects in call-by-value languages as well.
I was once told that SPJ wanted to implement a call-by-value Haskell if he
could
have started again :)

In Ur/Web, Adam Chlipala's functional call-by-value language for
web-programming,
monads are used extensively for signals, transactions, etc.




On Thu, Mar 21, 2019 at 9:24 PM Vanessa McHale <vanessa.mch...@iohk.io>
wrote:

> I'm not sure what the point of an IO monad is in a strict language -
> Haskell has good reason to employ them, but I don't think it's really worth
> it in other cases (at least, I actually know much about PureScript, but I
> don't think ATS needs it).
>
> I think the way that ATS uses linear types for IO is slightly different -
> it uses them to e.g. ensure a handle is closed. Linearity does also have
> the curious benefit of making it possible to have lazy/strict evaluation be
> the same; you can rule out the example you provide and you can rule out the
> bottom type.
>
> Cheers,
> Vanessa McHale
> On 3/21/19 12:28 PM, Brandon Barker wrote:
>
>
>
> On Thursday, March 21, 2019 at 9:30:40 AM UTC-4, Brandon Barker wrote:
>>
>> Hi Artyom,
>>
>> I'm also grappling with the issue of RT in this case as I'd so far only
>> thought about it in terms of function calls, but what you and Vanessa say
>> helped me to understand the issue. Though I haven't managed to get ATS to
>> have the same behavior as OCaml in the "let expression" above, I suspect it
>> is possible. The key phrase here seems to be "side-effecting expression",
>> and relates to the fact that functions in ATS can perform side effects
>> without having any effect type or IO monad ascribed to the value (again,
>> iirc).
>>
>
> Well, maybe that isn't the real key - the real key, I now think, is that
> ATS doesn't (by default?) model an IO effect. In section 6.9 of
> http://ats-lang.sourceforge.net/DOCUMENT/INT2PROGINATS/PDF/main.pdf it is
> mentioned that using both linear and dependent types may be used to do
> this, though I think the suggestion here is for more than printing to e.g.
> STDOUT.
>
> If anyone has looked at modeling/enforcing an IO-like effect type in ATS,
> I'd be interested to see it.
>
>>
>> Perhaps tonight I should try out the same in Idris or PureScript, which
>> are not lazily evaluated by default but do use IO, to get a better
>> understanding.
>>
>> On Thursday, March 21, 2019 at 3:17:46 AM UTC-4, Artyom Shalkhakov wrote:
>>>
>>> Hi Brandon,
>>>
>>> Admittedly I don't really understand what RT is, but from what I
>>> understand, in Haskell the expression like [print "ha"] is basically a
>>> command to the top-level interpreter (which is the language runtime) to
>>> perform an effect on the console (moreover, it will be evaluated on
>>> as-needed basis). Moreover, the ";" is itself another comand, the explicit
>>> sequencing command, the meaning of which is "perform the left-hand side
>>> effects, then perform the right-hand side effects". Such a command is a
>>> value, so it can be passed as a value and reused as many times as is
>>> necessary. In ATS, the expression like [print "ha"] evaluates right there
>>> to a void/"no value", and the ";" is also NOT a value at all, but rather a
>>> "shortcut" syntax to a "let-in-end" form.
>>>
>>> I like to imagine an interpreter that sits in the Haskell's runtime.
>>> Values of IO type are commands to this interpreter. Typical Haskell
>>> IO-based programs are building up these commands as they are being
>>> evaluated by the runtime. The runtime starts evaluation at the "main"
>>> expression defined by the programmer.
>>>
>>> чт, 21 мар. 2019 г. в 03:45, Brandon Barker <brandon...@gmail.com>:
>>>
>>>> I'm a little rusty, so can't come up with many good examples.
>>>>
>>>> Apparently it is possible to do something like this in OCaml:
>>>>
>>>> implement
>>>> main0 () = {
>>>>   val () = let
>>>>     val ha = print("ha")
>>>>   in
>>>>     (ha; ha) // How to get two ha's here?
>>>>   end
>>>> }
>>>>
>>>>
>>>> After running the program, you would only see one "ha", which violates
>>>> RT.
>>>>
>>>> However, ATS doesn't seem to allow a sequence expression in the "in"
>>>> position of a let expression, as this doesn't compile. Admittedly I'm just
>>>> trying to see if ATS2 doesn't have RT in this particular case, but it would
>>>> also be good to know about the sequence expressions here.
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "ats-lang-users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to ats-lang-user...@googlegroups.com.
>>>> To post to this group, send email to ats-lan...@googlegroups.com.
>>>> Visit this group at https://groups.google.com/group/ats-lang-users.
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/ats-lang-users/5eba6b86-4146-4ba2-a87f-f8c511d902f0%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/ats-lang-users/5eba6b86-4146-4ba2-a87f-f8c511d902f0%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>
>>>
>>> --
>>> Cheers,
>>> Artyom Shalkhakov
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "ats-lang-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to ats-lang-users+unsubscr...@googlegroups.com.
> To post to this group, send email to ats-lang-users@googlegroups.com.
> Visit this group at https://groups.google.com/group/ats-lang-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ats-lang-users/5391973a-4bd4-4238-a007-4dc08d1d9d4d%40googlegroups.com
> <https://groups.google.com/d/msgid/ats-lang-users/5391973a-4bd4-4238-a007-4dc08d1d9d4d%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> --
> You received this message because you are subscribed to the Google Groups
> "ats-lang-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to ats-lang-users+unsubscr...@googlegroups.com.
> To post to this group, send email to ats-lang-users@googlegroups.com.
> Visit this group at https://groups.google.com/group/ats-lang-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ats-lang-users/b21006ff-bc7e-d828-1462-4d9c7103feae%40iohk.io
> <https://groups.google.com/d/msgid/ats-lang-users/b21006ff-bc7e-d828-1462-4d9c7103feae%40iohk.io?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"ats-lang-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to ats-lang-users+unsubscr...@googlegroups.com.
To post to this group, send email to ats-lang-users@googlegroups.com.
Visit this group at https://groups.google.com/group/ats-lang-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ats-lang-users/CAPPSPLpb%3Do6BrSy3Jtw56Cd2-K3Fp9pdcnsHoUeKLX3cm28Q2w%40mail.gmail.com.

Reply via email to