Mercurial > hg > may
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); |