Up to Main Index Up to Journal for August, 2023 JOURNAL FOR TUESDAY 1ST AUGUST, 2023 ______________________________________________________________________________ SUBJECT: Not quite closures… DATE: Tue 1 Aug 19:30:11 BST 2023 I was just writing away, updating Mere ICE documentation for functions, when an idea hit me. Writing about stuff you’ve implemented is good for generating ideas. One monumentally quick‘n’dirty hack later I had the following working: >cat delayed.mr d = call getDelayed 3 5 println call d // prints 15 exit getDelayed: func a b return [](delayed a b) delayed: func x y return x*y endfunc endfunc >mere delayed.mr 15 > It’s not quite a closure really, it does not capture all of the surrounding environment. However, it’s damn close. For now the idea is parked as “delayed functions”. I like the idea as it fits Merer’s style quite well… To get this into Mere proper I’d have to add a new type and all the associated tests. In the above ‘[]( … )’ creates an array of any type. This is similar to ‘[]int(1 2)’ or ‘[]string("a" "b")’ but without specifying the array type. An array of any type is a type I have planned, but not just yet. I want to get Mere ICE updated with functions before anything else. For now, as I said, parked. But I thought it interesting enough to mention it. This will also act as a reminder to myself ;) -- Diddymus Up to Main Index Up to Journal for August, 2023