File: tables.m2

package info (click to toggle)
macaulay2 1.21%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 133,096 kB
  • sloc: cpp: 110,377; ansic: 16,306; javascript: 4,193; makefile: 3,821; sh: 3,580; lisp: 764; yacc: 590; xml: 177; python: 140; perl: 114; lex: 65; awk: 3
file content (25 lines) | stat: -rw-r--r-- 612 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
--		Copyright 1993-2002 by Daniel R. Grayson

needs "methods.m2"

table = (rows,cols,f) -> apply(rows,i->apply(cols,j->f(i,j)))

applyTable = (m,f) -> apply(m, v -> apply(v,f))

subtable = (u,v,m) -> table(u, v, (i,j)->m_i_j)

isTable = m -> (
     instance(m, List) and
     #m > 0 and
     all(m, row -> instance(row, List) and #row === #m#0))

transpose List := List => m -> (
     if isTable m
     then pack(# m,mingle m)
     else if # m === 0
          then {}
	  else error ("expected ", toString m, " to be a table"))

-- Local Variables:
-- compile-command: "make -C $M2BUILDDIR/Macaulay2/m2 "
-- End: