4 ms·
Are you trying to address anything I've said, or just ranting for another reason?
by NOGDP 7y ago
Are you trying to address anything I've said, or just ranting for another reason?
- kragen 7y agoBless your heart. The former.
- chris_wot 7y agoIn that case, maybe you might like to make an attempt at addressing his points.
- kragen 7y agoThere's no point in trying to explain things to someone who's aggressively defending their ignorance. (I have lots of experience being the aggressively ignorant guy.) Step one is realizing other people might know something you don't. After that it becomes useful to talk to you. Someone who's determined to dismiss what they're hearing can always find an excuse—especially in programming, where everything is Turing-complete anyway.
- Dylan16807 7y agoI realize you might know something I don't, I promise! Would you like to say any of those things? So far you've only given instructions that would take many hours to follow, not imparted knowledge or given a good description of why those instructions are worth the effort. You've given no hint of why the OP would be wrong, you've only been dismissive.
- kragen 7y agoTry watching this video; it will only take you 8 minutes, but within 3 minutes you should have an idea of why array languages are different from having an ndarray library available in Rust or having typeclasses in Haskell: https://www.youtube.com/watch?v=a9xAKttWgP4 https://www.youtube.com/watch?v=a9xAKttWgP4 After you watch that you will of course suspect that APL and other array languages like J are a sort of DSL for things like numerical linear algebra, which is of course what Numpy and Octave are. (Even though the Game of Life isn't linear algebra, it's very clearly matrix-based, so it doesn't seem that far off.) Dyalog has posted some other videos demonstrating the use of their proprietary APL for different things, but I think a more interesting one is https://www.youtube.com/watch?v=e0rywC7-i0U https://www.youtube.com/watch?v=e0rywC7-i0U, by J inventor Roger Hui. This is an hour and a half, but it demonstrates some approaches to reducing different problems to multidimensional arrays, of pointers ("boxes") in some cases. This ought to be enough to convince you that there's an alien kind of thinking here, quite different from the Haskell and Rust approaches, that can be applied to a wide variety of problems. Now, I'm not Stevan Apter, so I'm not going to try to convince you that this alien kind of thinking is better. But it's clearly different, and different ways of thinking work best in different situations.
- defen 7y agoPretty mind-blowing. Any Haskell experts want to attempt a point-free version of the function that calculates the next generation for an arbitrary matrix in Conway’s Game of Life?
- kragen 7y agoThat's a little unfair—the APL version in that video isn't point-free.
- lgas 7y agoIf you use a the right representation of the board in Haskell then you don't have to write a function to calculate the next generation at all, you can just use Comanadic extend, as Chris Penner does here: https://github.com/ChrisPenner/conway/blob/master/src/Conway.hs#L53 https://github.com/ChrisPenner/conway/blob/master/src/Conway...
- kragen 7y agoWhile this code is awesomely mindbending, it does seem to be limited to a 20×20 grid, rather than being applicable to grids of any size. Also, and correct me if I'm wrong here, it looks like it would take more than 5 minutes to write. The more interesting aspect, though, is that it seems to be organized in an almost totally different way from the APL code. I suggest that this is largely because the two languages foster very different approaches to problem-solving (though also I get that this is not the normal way to program Life in Haskell either).
- lgas 7y agoIt doesn't have to be a finite grid. Here is another comonadic implementation of Life with an infinite board: https://github.com/BartoszMilewski/GameOfLife/blob/master/Life.hs https://github.com/BartoszMilewski/GameOfLife/blob/master/Li... Either version would definitely take me more than five minutes to write, but then again it would take me more than five minutes to write the APL version too. For someone like Penner or Milewski the comonadic Haskell versions might be achievable in the five minute ballpark.