Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!1.eu.feeder.erje.net!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: Paul Rubin Newsgroups: comp.lang.forth Subject: Re: rhel 7 and kforth Date: Fri, 17 Apr 2015 15:47:34 -0700 Organization: A noiseless patient Spider Lines: 23 Message-ID: <871tjiwewp.fsf@jester.gateway.pace.com> References: <87pp73wi24.fsf@jester.gateway.pace.com> <87a8y695hs.fsf@jester.gateway.pace.com> <55316ca5$0$21262$e4fe514c@dreader37.news.xs4all.nl> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: mx02.eternal-september.org; posting-host="bda44be170c76b3ef6d23fecd204a8fa"; logging-data="23164"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18wlUB/8+k7h6RmRWLRUyas" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) Cancel-Lock: sha1:kSL1c/h3BRRI+hvnPzm6J4h5xkE= sha1:qPuaU0VRZxE5XFSYKJ+k/D8b36k= Xref: csiph.com comp.lang.forth:38306 albert@spenarnc.xs4all.nl (Albert van der Horst) writes: > What is the value of an expression f()+g() in the circumstance of > side effects (i/o changing global variables etc.) ? Indeed, in Haskell such an expression isn't even legal and would be rejected by the compiler. The only way to run two separate side-effecting actions in the same thread is to connect them through an explicit sequencing operator. > In many languages operands are defined to be concurrent, meaning that > f and g could be executed even in parallel processes or threads. Haskell is like that in principle, but if you say f+g then f and g are required to have no side effects. The only values that can have side effects in Haskell have a special type signature and you can't just add them like that. > (At a time parallel processing was far off, it is just mathematical > thinking.) I think there was a similar situation in functional programming, except the goal was to just not have side effects, since among other things that lets certain verification techniques work.