Questions about introduction-to-evaluate

A neat trick that we can pull is that we can define the new solution in terms of the outer solution. In this next example we will add the first element of the old solution to our new solution.

$ brun '(a (q . (+ 2 (q . 5))) (c 2 (q . (70 80 90))))' '(20 30 40)'
25

equal

$ brun '(+ 2 (q . 5))' '(20 70 80 90)'
25

Why is the program to insert the list written separately, 20 display is divmod?

$ brun '(c 2 (q . (70 80 90)))' '(20 30 40)'
(divmod 70 80 90)

Although the calculation result is correct, why is divmod here

$ brun '(+ 2 (q . 5))' '(divmod 70 80 90)'
25
2 Likes

When you write a program, the first argument in the list is interpreted as an operator. However, this operator is also stored as an unsigned int. This can lead to ambiguity and confusing outputs:

This gives some explanation.

So it is actually just brun output. As op_divmod is 20, the output is displayed as divmod instead of 20.

2 Likes

Really confusing for newbies, now I understand