Ha az ember nem Haskell-ben nyomul, a monad nagyon szépen kikerülhető. Ha a lambda "szivacs operátorára" úgy gondolunk, mint ami egy kifejezésből egy függvényt csinál -- azaz x+z helyett f(z)=x+z, és utána rákérdezünk, hogy f(2) az mennyi is lesz -- az nem igazán jelent gondot még kezdőknek sem. A magasabbrendű függvényekhez már kell egy kis alapozás.
10-18 éves gyerekeknek nyomtam le a torkán egy hetes Racket gyorstalpalót - és nem sokan szöktek meg. (Igen, Windows alatt dolgoztunk mi is.)
Igaz az első délelőtt csak a táblára firkáltunk, listák kezelését vettük, és különféle "gépeket" -- pl. https://people.eecs.berkeley.edu/~bh/ss-pics/plumbing.jpg -- kapcsolgattunk össze. Majd ezután néztük meg mindezt a gépeken is. A hét végére már a Project Euler (Project Euler) egyes feladatait oldottuk meg együtt. Kellett egy kis ösztönzés, itt pedig nyilvántartják, hogy kinek mit sikerült megoldania. Lehet mondani, hogy jobban jártak volna a diákok, ha az n+1-dik imperatív nyelvbe vezetjük be őket, de így tudtam mindegyikből teljesen kezdőt csinálni, és együtt mozgatni mindazt, aki még egy programozási nyelves sem ismert, azzal, aki programozói versenyekre járt. Egyik sem unatkozott, és egyik sem veszítette el a fonalat. Azt hiszem, nem árt néha egy kicsit más nézőpontot megmutatni (főleg ha a programozási nyelvek kezdenek egy közös irányba fejlődni.)
A debreceni egyetemen a Racket vált a funkcionális paradigma környezetévé -- talán ennek a nyári tábornak köszönhetően is. PTI-sek tanulják a képzésük vége felé, csupán egy szemeszterben. (Nehéz az öreg kutyának új trükköt tanítani.)
A lambda függvényekre visszatérve: lopakodva lassan beveszi magát mindenhova, a Python már rég tartalmazza, ha valamely függvényparaméter pont egy függvény lenne, a hívás helyén megadhatjuk lambda kifejezésként, nem kell külön definiálni, nevet találni neki. A C++-ban előkerült, bár elég számomra elég furán néz ki.