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
>             <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
> <mailto:ats-lang-users+unsubscr...@googlegroups.com>.
> To post to this group, send email to ats-lang-users@googlegroups.com
> <mailto: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.

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to