Software Assurance Reference Dataset

Timon Gehr via Digitalmars-d digitalmars-d at puremagic.com
Mon Jul 21 15:22:10 PDT 2014


On 07/21/2014 06:40 AM, Andrei Alexandrescu wrote:
> On 7/20/14, 8:15 PM, Timon Gehr wrote:
>> 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"
>
> And that doesn't look awkward at all :o). -- Andrei
>
>

Indeed.

This just creates a variable, modifies it 'n' times in a loop and then 
reads the result.


More information about the Digitalmars-d mailing list