comparison src/may/matrix.yeti @ 591:eb27901664cd

Check for consistent lengths in fromRows/fromColumns; test for same in mapRows/mapColumns
author Chris Cannam
date Thu, 11 Sep 2014 11:25:50 +0100
parents 7c33308cebf8
children c62894d056c7
comparison
equal deleted inserted replaced
590:7c33308cebf8 591:eb27901664cd
442 442
443 equal = 443 equal =
444 equal' (==) vec.equal; 444 equal' (==) vec.equal;
445 445
446 fromRows rows = 446 fromRows rows =
447 (if any do r: vec.length r != vec.length (head rows) done rows then
448 failWith "Inconsistent row lengths in fromRows (\(map vec.length rows))";
449 fi;
447 { 450 {
448 size = { 451 size = {
449 rows = length rows, 452 rows = length rows,
450 columns = 453 columns =
451 if empty? rows then 0 454 if empty? rows then 0
452 else vec.length (head rows) 455 else vec.length (head rows)
453 fi, 456 fi,
454 }, 457 },
455 data = DenseRows (array rows) 458 data = DenseRows (array rows)
456 }; 459 });
457 460
458 fromColumns cols = 461 fromColumns cols =
462 (if any do c: vec.length c != vec.length (head cols) done cols then
463 failWith "Inconsistent column lengths in fromColumns (\(map vec.length cols))";
464 fi;
459 { 465 {
460 size = { 466 size = {
461 columns = length cols, 467 columns = length cols,
462 rows = 468 rows =
463 if empty? cols then 0 469 if empty? cols then 0
464 else vec.length (head cols) 470 else vec.length (head cols)
465 fi, 471 fi,
466 }, 472 },
467 data = DenseCols (array cols) 473 data = DenseCols (array cols)
468 }; 474 });
469 475
470 fromLists data = 476 fromLists data =
471 case data of 477 case data of
472 Rows rr: fromRows (map vec.fromList rr); 478 Rows rr: fromRows (map vec.fromList rr);
473 Columns cc: fromColumns (map vec.fromList cc); 479 Columns cc: fromColumns (map vec.fromList cc);