Efter mina stora framgångar med Runge-Kutta-lösaren, tänkte jag nu använda Haskell till två uppgifter. <b>Är det en hållbar lösning eller finns det en mer standardimplementation av en matris man kan använda?</b> Hur ser det ut med komplexiteten för "!" ? Array är en primitiv datatyp och är sannolikt implementerad som minnesareor och pekare (precis som i C). Men hajar inte kompilatorn att jag aldrig kommer använda det tidigare elementet (i de fall det är så, vill säga), motsvarande destruktiva operationer i Lisp? Jo, det är troligt att kompilatorn kan se att den gamla bara kastas bort och då kanske den t.o.m. återanvänder minnesarean.Matriser tillräckligt effektiva i Haskell?
1. Jag ska ha en 2-D-yta på vilken jag ska lösa en reaktions-diffusions-ekvation. Denna får jag ju då representera som någon slags matris. Problemet är att jag ska använda mig av Laplace:en i varje punkt, och då känns det som att det blir jävligt segt med en [[a]]. Jag kan ju inte hålla på med en massa "!!" ?
2. Jag ska göra en n x n-matris för att skapa en ganska enkel "cellular automaton"-applikation. Det blir väl då en [[Bool]]. Men även här måste jag ha tillgång till mina grannar på något effektivt sätt.
Min fundering är om det skulle vara en bra ide att istället för att bara ha en [[]], skulle kunna ha en uppsättning sådana, med olika shift åt alla håll. Alltså center, left, leftleft, right, rightright, up, upup, osv.
Är det en hållbar lösning eller finns det en mer standardimplementation av en matris man kan använda?
Det är alltså hastigheten som jag är väldigt bekymrad över.Sv: Matriser tillräckligt effektiva i Haskell?
Kanske är arrayimplementationen effektivare: http://www.haskell.org/onlinereport/array.htmlSv:Matriser tillräckligt effektiva i Haskell?
Det ser ju ut som en O(1), men jag måste ju säga att jag inte förstår exakt hur det funkar... ?Sv: Matriser tillräckligt effektiva i Haskell?
Därför tror jag att åtkomstkomplexiteten är O(1), medan uppdatering kräver att hela minnesarean skall kopieras och därför ger komplexiteten O(n), där n är antalet element/platser i arrayen.Sv:Matriser tillräckligt effektiva i Haskell?
För annars är det tveksamt om detta kommer att funka. Prestanda är av absolut högsta vikt i sammanhanget.Sv: Matriser tillräckligt effektiva i Haskell?