[The list concatenation function] ++ 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).
I think that’s the part I was most confused by. I’m coming mostly from Java and C, where ++ would be the unary operator to increment a number. I would have expected that symbol in a functional language context to be a shorthand for + 1. The idea of it being an infix function didn’t occur to me.
Partial applications I remember from a class on Clojure I took years ago, but as far as I remember, the functions always had to come first in any given expression. Also, I believe partial fills the arguments from the left, so to add a suffix, I’d have to use a reversed str function. At that point, it would probably be more idiomatic to just create an inline function to suffix it. So if my distant recollection doesn’t fail me, the Clojure equivalent of that partial function would be #(str % " Is Not an Emulator").
iterate works the same though, I think, so the whole expression would be (def wine(iterate #(str % " Is Not an Emulator")"WINE") )
This code was typed on a mobile phone in a quick break based off of years-old memories, so there might be errors, and given it was a single class without ever actually applying it to any problems, I have no real sense for how idiomatic it really is. I’ll gladly take any corrections.
NGL though, that last, readable version is sexy as hell.
I think that’s the part I was most confused by. I’m coming mostly from Java and C, where
++
would be the unary operator to increment a number. I would have expected that symbol in a functional language context to be a shorthand for+ 1
. The idea of it being an infix function didn’t occur to me.Partial applications I remember from a class on Clojure I took years ago, but as far as I remember, the functions always had to come first in any given expression. Also, I believe
partial
fills the arguments from the left, so to add a suffix, I’d have to use a reversedstr
function. At that point, it would probably be more idiomatic to just create an inline function to suffix it. So if my distant recollection doesn’t fail me, the Clojure equivalent of that partial function would be#(str % " Is Not an Emulator")
.iterate
works the same though, I think, so the whole expression would be(def wine (iterate #(str % " Is Not an Emulator") "WINE") )
This code was typed on a mobile phone in a quick break based off of years-old memories, so there might be errors, and given it was a single class without ever actually applying it to any problems, I have no real sense for how idiomatic it really is. I’ll gladly take any corrections.
NGL though, that last, readable version is sexy as hell.