Software Assurance Reference Dataset

Timon Gehr via Digitalmars-d digitalmars-d at puremagic.com
Sun Jul 20 20:15:35 PDT 2014


On 07/20/2014 10:50 PM, Walter Bright wrote:
> On 7/20/2014 3:27 AM, Dmitry Olshansky wrote:
>> Functional programming is full of simple recursion and it would be
>> nice not to
>> stack overflow in debug builds.
>
> Traditional FP languages don't have loops, and so must do recursion.

Uh...

> D has loops, even in pure functions,

So does Haskell.

import Control.Monad
import Control.Monad.ST
import Data.STRef

factorial :: Integer -> Integer
factorial n = runST $ do
   r <- newSTRef 1
   forM_ [1..n] $ \i->
     modifySTRef r (*i)
   readSTRef r

main = print $ factorial 5 -- "120"


> there's no reason not to use them.
> ...

But of course there are reasons to use tail calls.


More information about the Digitalmars-d mailing list