is there anybody here
who knows both Haskell and Smalltalk ? Can Smalltalk benefit from functional ideas and Haskell's ideas about Immutability Currying Function composition and the State and IO Monads ? I like the way Haskell is now based on Category Theory which is the mathematics of function composition . Haskell was not always thus it had a pre Category Theory epoch . which apparently was a UM or Ugly Mess . Can these ideas be applied to Smalltalk? And would it be good? Can Smalltalk have a way of making a framework that has an API and is statically typed inside using a Haskell like type system? On Saturday, August 1, 2015, Kjell Godo <squeakl...@gmail.com> wrote: > > > On Monday, July 6, 2015, Eliot Miranda <eliot.mira...@gmail.com > <javascript:_e(%7B%7D,'cvml','eliot.mira...@gmail.com');>> wrote: > >> Hi Kjell, >> >> On Jul 6, 2015, at 6:16 AM, Kjell Godo <squeakl...@gmail.com> wrote: >> >> Thank you for the detailed reply Andreas >> >> >> >> Are there any Smalltalk packages implementing >> >> Category Theory based >> >> functional programming constructs >> >> for function composition like >> >> functors , applicatives , monads , arrows , etc ? >> >> >> >> Do people have opinions about whether or not >> >> these plus immutable data structures would be good for managing state >> >> in Smalltalk like they do it in Haskell etc? i know that monads are not >> built >> >> into Haskell but are implemented as addons via Haskell packages. >> >> My Haskell friend said all you need to do functional programming is >> >> first class functions >> >> which Smalltalk Block contexts almost are except they lack their own >> stack? >> >> if you wrap a Block in a Function Object do you then get the stack >> >> effect so you can essentially call the Block recursively? >> >> >> The Pharo & Squeak dialects, along with most others, now have closures, >> so blocks are fully recursive. >> >> >> i have been wondering about taking a crack at implementing these >> >> in Smalltalk and i wonder if it would be >> >> theoretically possible >> >> to speed them up by inlining them via the Smalltalk compiler >> >> >> The compiler already inlines closures in a few key control messages such >> as ifTrue: whileTrue: and:. >> >> >> I recommend spending some time reading the code for the core execution >> classes and the compiler, and running examples interactively to learn how >> the system works. It's a fun process and well supported by the tools. >> Remember that the debugger includes a meta circular interpreter for >> executing the system's bytecode, and that the compiler compiles source to >> bytecode in the firm of CompiledMethod instances you can inspect, decompile >> and list their bytecode. >> >> All the questions you have above you can answer for yourself by running >> examples and using the tools to observe what happens. This is a route to >> mastering the system; IMNERHO the best. >> >> > is there any tutorial? > > how do i do this? > > >> >> Thank you >> >> >> Eliot (phone) >> > > >> >> On Saturday, November 8, 2014, Andreas Wacknitz <a.wackn...@gmx.de> >> wrote: >> >>> >>> Am 07.11.2014 um 16:51 schrieb Kjell Godo <squeakl...@gmail.com>: >>> >>> This is off topic. >>> >>> I tried to post it as a top level thread but I have become unknown. >>> >>> Why do you expect that? Many people here are using Smalltalk for years. >>> Just because you have been silent for some time doesn’t mean everybody >>> will forget about you :) >>> >>> >>> I don't know if you want this crap in here but I have decided not to >>> wait for the >>> >>> postmaster to get back to me on the subject of becoming known. Feel >>> free. >>> >>> >>> >>> >>> >>> ( Original-SUBJECT: "( picoVerse-:( what about state , is state >>> really evil? ) )" ) >>> >>> >>> >>> >>> >>> >>> I am a Smalltalker. >>> >>> But in the past few months i have been running with the Haskellers. >>> >>> The Haskellers hate state. >>> >>> This seemed strange at first because as a Smalltalker i love(d) state. >>> State iswas my friend. >>> >>> 90% of my life as a Smalltalker is state wrangling. I am a state >>> herder. >>> >>> The debugger is my staff I use to whack the state. And TestCase is my >>> sheep dog. >>> >>> But to the Haskellers >>> >>> state is >>> >>> the evil trinity >>> >>> of >>> >>> satan the anti christ and the false prophet >>> >>> all rolled into one. >>> >>> State is the true dev incarnation of the total catastrophe of >>> development Armageddon. >>> >>> Blood up to the bridles for hundreds of miles. Dogs and cats living >>> together. Mass hysteria. >>> >>> They say. >>> >>> I'm not sure i quite get it yet but they keep preaching on this one >>> point most of all. >>> >>> State is evil. >>> >>> You must keep all state in a Monad. As many methods/functions m as >>> possible >>> >>> must be 100% dependent on the input parameters ONLY. >>> >>> No hidden instance variables affecting the return value of m are allowed. >>> >>> The only effect m can have is to return a value. >>> >>> If all this is true then m is pure. >>> >>> And pure is good. Pure is very good. And the wind says >>> >>> very. >>> >>> So i wonder if any of you fellow >>> >>> Smalltalkers >>> >>> have thought about this at all. >>> >>> First, there are no good definitions of what is an object oriented >>> language and what is a functional language. >>> Thus, languages like C++, C#, Java are being considered object oriented. >>> But their object orientation is not the same like Smalltalk’s. >>> The same problem exists in the functional language world: Some consider >>> LISP being functional, some deny that. >>> >>> Second, for some years I am constantly seeking for „the best“ language >>> to solve my problems in. Alas I wasn’t successful yet and don’t expect >>> to be successful in the future. Every programming paradigm has its >>> strengths and weaknesses when it comes to real world problems. >>> So in my eyes it is best to know the different programming paradigms and >>> its representative languages in order to be able to choose the >>> best fitting language for your problem at hand. >>> >>> Third, there have been many attempts to create multi-paradigm languages >>> (like C++, C#, Java, Scala, …). The idea behind is simple: combine >>> the best characteristics. In my eyes all of them failed because what >>> always have been created is Frankenstein’s monster. When you combine >>> paradigms you will may get some advantages of all but sure you will get >>> a lot of additional complexity. >>> >>> Fourth, it has been said many times before: What makes Smalltalk so nice >>> is not only the language. It’s the whole system: the language, duck typing, >>> the image (object world), the tools, the VM, the simplicity, the >>> elegance, … And last but not least the communities around. >>> >>> Regards >>> Andreas >>> >>> PS: If you are interested in functional programming and don’t like >>> static typing you should have a look at Clojure. It has some nice ideas >>> about >>> how to deal with state concurrently. >>> >>> >>> >>> Thanks >>> >>> Kjell E Godø >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> (((((((((( Maybe Smalltalk should be called Statewalk >>> >>> as in yak it up fuzz ball. )))))))))) >>> >>> >>>