### got a feeling that Tim is pushing bs

Oct. 15th, 2017 09:50 amActually, Runar is not always exactly right, but he's close. But Tim, his former coworker... do you think it makes sense? To me it's some kind of alchemy. Almost there, but not there.

### good news for fp-bashers

Aug. 29th, 2017 04:00 pmKind of almost obvious. But you can tell all those haskellers that your Turing machine (unversal, of course) is a better busy beaver than their unreadable code.

### update on "FP performance"

Feb. 9th, 2017 12:49 pm- reading the files in parallel, as opposed to sequential (don't ask, will investigate)

- parallel output to stdout, instead of linearising the output. That was obviously my mistake, have to group the data, not mix them.

Now it's still 3 times faster than FP version. Got a suspicion that in JVM method dispatch is much heavier than plain if/else. It should be. But it's the staple of FP, never use booleans or ifs, but dispatch by the type. So, well... have to investigate.

### fp myths part 3

Jan. 19th, 2017 07:37 pmMore Haskell bashing.

"Haskell is so good that if a functor does not have a free monad, it cannot be written in Haskell". Which is funny. Something like Haskell version of Church thesis.

### critique will be appreciated

Jan. 7th, 2017 11:15 amhttps://vpatryshev.wordpress.com/2017/

### If all you know is OOP...

Dec. 1st, 2016 10:31 pmDomain-Specific Languages of Mathematics: Presenting

Mathematical Analysis Using Functional Programming

### discovering Java programming

Nov. 18th, 2016 11:12 am/** * A marker interface for classes that have no data inside * Meaning, two instances are equal if they have the same class */ public interface JustCode extends Serializable { } ... public interface Function<X, Y> extends JustCode { Y apply(X x); } ... public interface Function2<X, Y, Z> extends JustCode { Z apply(X x, Y y); } ... public int hashCode(JustCode x) { return x == null ? 0 : x.getClass().hashCode(); } public boolean equal(JustCode x, JustCode y) { return x == null ? y == null : y != null && x.getClass() == y.getClass(); }

No shit, just discovered this kind of data.

You've probably noticed that I kind of prefer

`S`

to OOP. :)### can do, java 6

Nov. 8th, 2016 11:39 am`val myName = props.get("Name") orElse ""`

you are introducing an algebra over

`Option`

monad.Even if you have no clue what an algebra or a monad is.

Same goes for catching exceptions and returning a "default value". Now you have a category of algebras over the exception monad.

This category is called Eilenberg-Moore category for the monad. There's a couple of adjunctions of course.

Kleisli also provides a couple of adjunctions.

All possible adjunctions make a category, where Kleisli is an initial object and Eilenberg-Moore is a terminal object.

Nlab says that Kleisli can actually be embedded into Eilenberg-Moore.

Meaning, guys, you don't need to invent "default values"; just use Option[T]. Whatever. Probably hard to explain to people that are thinking in terms of saving computer memory on string instantiation.