[Haskell-beginners] Lions, Wolves and Goats

Elric elric at kiosa.org
Fri Jun 13 15:51:23 UTC 2014


Thank You Ben,

Your solution is really neat. I was trying to create the infix 'eat' 
function when I was thinking of implementing this in Haskell. But I 
completely forgot about being able to use the Record syntax to do this.

I am not sure about the purpose of !Int, but that is something for me to 
read more and learn :)

Thank You,
Elric

  On 06/08/2014 04:52 PM, Ben Gamari wrote:
> Elric <elric at kiosa.org> writes:
>
>> Hi,
>>
>> Disclaimer: I have been learning Haskell for a month and there are still
>> several things about this wonderful language I know nothing of, so
>> please bear with me. Also, I apologize for this (somewhat) long mail./
>>
> ...
>> Below are the two versions of the code I came up with to solve this.
>> Neither of them converge to the 'endStates' even after about 15 minutes.
>> So there is definitely something wrong with what I have done. But after
>> banging my head on the keyboard for more then a day with this, I would
>> appreciate some pointers or help.
>>
> For one, you don't appear to be removing duplicates from the search set
> resulting in a blow-up in your search space.
>
>> I thought using the ADT was causing the performance issue and reverted
>> to using a plain 3-termed list which holds [Lion count, Wolf Count,
>> Sheep Count] :: [Int]
>>
> Your problem here isn't the use of ADTs, it's the use of lists. Why not
> instead define a forest as follows?
>
>      data Forest = Forest { wolfs, lions, goats :: !Int }
>
> Note how I used a strictness annotation !Int here to ensure that the
> compiler unboxes these members (at least with GHC >= 7.8), which is
> almost certainly what you want in this case.
>
> Anyways, I took a quick stab at the problem myself. My approach can be
> found here[1]. Performance isn't great (a bit better than Javascript)
> but then again the code is pretty much as naive as one could get. I'm
> sure things could be improved.
>
> Cheers,
>
> - Ben
>
>
> [1] https://gist.github.com/anonymous/e4a2ccd8df05255d5ed5

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20140613/cc900bb8/attachment.html>


More information about the Beginners mailing list