I was playing around with using empty arguments with functions to see what
happens.
This one seems to make sense

      ↑ (0↑(1 2)(3 4)),¨(0↑(1 2 3)(4 5 6))
0 0 0 0 0

This next one I'm not sure about. Theoretically, it should give the same
result as above, but maybe the behavior is different for defined functions.
      ↑ (0↑(1 2)(3 4))f¨(0↑(1 2 3)(4 5 6))
0 0 0
      ⎕cr 'f'
z←l f r
z←l,r

The APL2 LRM makes a big deal about each function having a corresponding
"fill function" that is used when the arguments are empty. It's not clear
about what happens with defined functions.


This one should probably be a length error or something, but I get a
failure.

      ↑ (0↑(1 2)(3 4))=¨(0↑(1 2 3)(4 5 6))

==============================================================================
Assertion failed: A->same_shape(*B)
in Function:      eval_fill_AB
in file:          ScalarFunction.cc:707

Call stack:

----------------------------------------
-- Stack trace at ScalarFunction.cc:707
----------------------------------------
0x43195865 __libc_start_main
0x80973E0  main
0x8200B65   Workspace::immediate_execution(bool)
0x80F1A4D    Command::process_line()
0x80F149E     Command::do_APL_expression(UCS_string&)
0x80F0C25      Command::finish_context()
0x80FAB54       Executable::execute_body() const
0x81B10DD        StateIndicator::run()
0x812CD9C         Prefix::reduce_statements()
0x812C31E          Prefix::reduce_A_F_B_()
0x8101FCC           DerivedFunction::eval_AB(Value_P, Value_P)
0x80C5B26            Bif_OPER1_EACH::eval_ALB(Value_P, Token&, Value_P)
0x81A2ACC             ScalarFunction::eval_fill_AB(Value_P, Value_P)
0x80AC487              do_Assert(char const*, char const*, char const*, int)
========================================

Colin

Reply via email to