There have been multiple accounts created with the sole purpose of posting advertisement posts or replies containing unsolicited advertising.

Accounts which solely post advertisements, or persistently post them may be terminated.

SexualPolytope , (edited )
@SexualPolytope@lemmy.sdf.org avatar

You’re pretty much right on the money. In Haskell, a String is a type synonym for [Char], so we can use the list concatenation function ++ to join strings. ++ is an infix function i.e. [1,2,3] ++ [3,4,5] = [1,2,3,3,4,5] (which will be equivalent to doing (++) [1,2,3] [3,4,5] by virtue of how infix functions work in Haskell). When we do (++ “a”), we create a partially applied function. Now, we can supply another string to it and it will add “a” at the end of it.

iterate f x produces a lazily evaluated sequence [x, f x, f f x, …]. So, to get the nth entry, we can do wine !! n where we use another infix function !!. With partial application, we can modify the definition of wine to create a function that takes an Int n and spits out the nth entry of it by doing


<span style="color:#323232;">wine </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="font-weight:bold;color:#795da3;">(!!) </span><span style="font-weight:bold;color:#a71d5d;">$</span><span style="color:#323232;"> iterate (</span><span style="font-weight:bold;color:#a71d5d;">++</span><span style="color:#183691;">" Is Not an Emulator"</span><span style="color:#323232;">) </span><span style="color:#183691;">"WINE"
</span>

We needed to wrap the !! inside parentheses because it’s an infix function. $ just changes the order of application. (IIRC, it’s the least significant function.) You can think that we’re wrapping whatever’s on the right of the $ by parentheses. Now we can do wine 2 instead of wine !! 2 to get “WINE Is Not an Emulator Is Not an Emulator”.

I’m by no means a Haskell expert. (I’m not even a professional programmer lol.) So, if someone would like to add some more details, they’re more than welcome.

Edit: A much more readable version might be


<span style="color:#323232;">wine 0 = "WINE"
</span><span style="color:#323232;">wine n = wine (n-1) ++ " Is Not an Emulator"
</span>
  • All
  • Subscribed
  • Moderated
  • Favorites
  • [email protected]
  • random
  • lifeLocal
  • goranko
  • All magazines