Commit Graph

22 Commits

Author SHA1 Message Date
Kartik Agaram 01ce563dfe 4262 - literal 'null' 2018-06-17 15:57:37 -07:00
Kartik Agaram b89b822439 4260 - make address coercions explicit
'deaddress' is a terrible name. Hopefully I'll come up with something
better.
2018-06-16 23:19:59 -07:00
Kartik K. Agaram 4a48bedcd1 4134 - 'input' = 'ingredient' 2017-12-03 23:25:40 -08:00
Kartik K. Agaram c0d61295ed 4008
Allow list `push` operation to save result in a new list rather than
mutate the existing list.
2017-09-25 21:20:49 -07:00
Kartik K. Agaram af4bf7ed22 3893 2017-05-29 01:40:20 -07:00
Kartik K. Agaram 898f03cc3b 3881 - allow students to turn sandboxes into recipes
Thanks Juan Crispin Hernandez for the suggestion.
2017-05-27 00:52:28 -07:00
Kartik K. Agaram d6ae00788a 3828 - make buffers shape-shifting (generic) 2017-04-18 10:47:35 -07:00
Kartik K. Agaram 860628c70a 3808 - 'length' for duplex lists 2017-03-31 08:11:45 -07:00
Kartik K. Agaram f116818c7c 3656
Periodic cleanup to replace 'reply' with 'return' everywhere in the
repo.

I use 'reply' for students to help reinforce the metaphor of function
calls as being like messages through a pipe. But that causes 'reply' to
get into my muscle memory when writing Mu code for myself, and I worry
that that makes Mu seem unnecessarily alien to anybody reading on
Github.

Perhaps I should just give it up? I'll try using 'return' with my next
student.
2016-11-10 10:24:14 -08:00
Kartik K. Agaram 8e64ab8b17 3514
Let's constrain 'push' on lists to always modify its ingredient.

That makes some possibilities more verbose, such as lists that share a
common tail. But may be worthwhile to get better errors in the common
use-case.
2016-10-18 08:33:20 -07:00
Kartik K. Agaram 6f65d5918f 3429 - standardize Mu scenarios
A long-standing problem has been that I couldn't spread code across
'run' blocks because they were separate scopes, so I've ended up making
them effectively comments. Running code inside a 'run' block is
identical in every way to simply running the code directly. The 'run'
block is merely a visual aid to separate setup from the component under
test.

In the process I've also standardized all Mu scenarios to always run in
a local scope, and only use (raw) numeric addresses for values they want
to check later.
2016-09-28 19:48:56 -07:00
Kartik K. Agaram 6e45be300e 3423 2016-09-27 10:43:42 -07:00
Kartik K. Agaram 048a33c24f 3422
Stop checking the number of ingredients and products when picking
shape-shifting recipes. That's more consistent with how we handle
regular recipes, and we still get errors in all the examples I can think
of:

  reverse  # no ingredients or products
  n:num <- length  # no ingredients; products don't provide type
2016-09-27 10:28:14 -07:00
Kartik K. Agaram 56e00e8878 3418 - some functions contributed by Caleb Couch 2016-09-27 09:07:53 -07:00
Kartik K. Agaram 760f683f27 3389 2016-09-17 12:55:10 -07:00
Kartik K. Agaram 51b0936fc7 3386 2016-09-17 10:30:24 -07:00
Kartik K. Agaram 7a84094adb 3385 2016-09-17 10:28:25 -07:00
Kartik K. Agaram 08f4628e8b 3379
Can't use type abbreviations inside 'memory-should-contain'.
2016-09-17 00:31:55 -07:00
Kartik K. Agaram 59e47aca14 3341
Process type abbreviations in function headers.

Still a couple of places where doing this causes strange errors. We'll
track those down next.
2016-09-12 10:00:43 -07:00
Kartik K. Agaram 94c598179d 3058 - 'remove' for lists 2016-06-16 17:02:08 -07:00
Kartik K. Agaram 3a2afe6e95 3057 - 'insert' for lists 2016-06-16 16:51:54 -07:00
Kartik K. Agaram 5e15a74f06 3055 2016-06-13 16:25:45 -07:00