# [Factor-talk] Debugging a confusing type error in matrix operations

```Hello,

I'm trying to create a word for the determinant of a square matrix, for the
general case where the matrix is 4x4 or larger. The implementation is almost
complete, except for a type error I can't figure out.```
```
USING: arrays fry kernel math math.matrices math.vectors sequences ;
IN: determinant-mini

: transpose ( matrix -- transposed )
[ dim second <iota> ] keep cols ;

: exclude-col ( matrix n -- others )
[ dup dim second <iota> ] dip '[ _ = ] { } reject-as
swap cols transpose ;

: alternating-sign ( seq odd-elts? -- seq' )
'[ 2 mod zero? _ = [ neg ] unless ] map-index ;

: alternating-first ( matrix -- alternating )
first t alternating-sign ;

DEFER: (ndeterminant)
: determinants-rest ( n matrix -- seq )
rest <repetition>
[ exclude-col dup length (ndeterminant) ] map-index ; recursive

: (ndeterminant) ( matrix n -- ndet )
swap [ alternating-first ] [ determinants-rest ] bi v* sum ;
recursive

The code compiles; use it like `{ { 1 -3 } { 2 5 } } 2 (ndeterminant)`; you
have to provide the number of rows in the matrix.

I'm referring to https://www.mathsisfun.com/algebra/matrix-determinant.html to
help me write the determinant of an n*n matrix where n>3. The algorithm I have
implemented is correct, and this code will work for any n > 1 however.

All the individual parts of the above code work properly and there is no error
when I run its separate parts in the listener, but in unit tests or when
calling (ndeterminant) directly I get a type error for using < between an array
(a element of the input matrix it seems) and an index like 0.

No suitable arithmetic method
left    { 1 3 }
right   0
generic <

I can't really tell where it's coming from but I think it's thrown inside
determinants-rest's quotation to map-index.

I've been over this code so many times now, another pair of eyes to tell me
what I'm obviously missing would be appreciated.

```------------------------------------------------------------------------------
```_______________________________________________