There are a couple of typos and unclarities in exercise 4.x:
4.3:
the text shows that the expected output of the following code should be *abc:
val starPrefixFn = ::strConcat.curry()("*")
println(starPrefixFn("abc"))
However, the strConcat is defined with a space so the expected output should be * abc
in 4.4 the class EmailTemplate inherits from a function so we can use the invoke() function, but it should be written with the override keyword as follow:
class EmailTemplate(fileName: String): (Person) -> String {
override fun invoke(aPerson: Person): String = TODO()
}