From 920ea92cb9b6fbb7a001b414006ffe5e4febe71a Mon Sep 17 00:00:00 2001 From: Taylor Date: Thu, 16 Jan 2025 12:38:18 -0600 Subject: [PATCH 1/5] refactored names of genes for consistency --- src/Push.hs | 46 +++++++++++++++++++++++----------------------- tests/Main.hs | 27 +++++++++++++-------------- 2 files changed, 36 insertions(+), 37 deletions(-) diff --git a/src/Push.hs b/src/Push.hs index 348ec56..3154933 100644 --- a/src/Push.hs +++ b/src/Push.hs @@ -9,20 +9,20 @@ import qualified Data.Map as Map -- One solution is for the exec stack to be a list of [Gene]. -- The parameter stack could be singular [Gene] or multiple [atomic] types. data Gene - = IntGene Int - | FloatGene Float - | BoolGene Bool - | StringGene String + = GeneInt Int + | GeneFloat Float + | GeneBool Bool + | GeneString String | StateFunc (State -> State) | PlaceInput String | Close | Block [Gene] instance Eq Gene where - IntGene x == IntGene y = x == y - FloatGene x == FloatGene y = x == y - BoolGene x == BoolGene y = x == y - StringGene x == StringGene y = x == y + GeneInt x == GeneInt y = x == y + GeneFloat x == GeneFloat y = x == y + GeneBool x == GeneBool y = x == y + GeneString x == GeneString y = x == y PlaceInput x == PlaceInput y = x == y Close == Close = True StateFunc x == StateFunc y = True -- This line is probably not the best thing to do @@ -30,10 +30,10 @@ instance Eq Gene where _ == _ = False instance Show Gene where - show (IntGene x) = "Int: " <> show x - show (FloatGene x) = "Float: " <> show x - show (BoolGene x) = "Bool: " <> show x - show (StringGene x) = "String: " <> x + show (GeneInt x) = "Int: " <> show x + show (GeneFloat x) = "Float: " <> show x + show (GeneBool x) = "Bool: " <> show x + show (GeneString x) = "String: " <> x show (StateFunc func) = "Func: unnamed" show (PlaceInput x) = "In: " <> x show Close = "Close" @@ -138,7 +138,7 @@ instructionExecDup state = state instructionExecDoRange :: State -> State instructionExecDoRange (State (e1 : es) (i0 : i1 : is) fs bs ss ps im) = if increment i0 i1 /= 0 - then State (e1 : Block [IntGene (i1 + increment i0 i1), IntGene i0, StateFunc instructionExecDoRange, e1] : es) (i1 : is) fs bs ss ps im + then State (e1 : Block [GeneInt (i1 + increment i0 i1), GeneInt i0, StateFunc instructionExecDoRange, e1] : es) (i1 : is) fs bs ss ps im else State (e1 : es) (i1 : is) fs bs ss ps im where increment :: Int -> Int -> Int @@ -152,14 +152,14 @@ instructionExecDoCount :: State -> State instructionExecDoCount state@(State (e1 : es) (i1 : is) fs bs ss ps im) = if i1 < 1 then state - else state {exec = Block [IntGene 0, IntGene $ i1 - 1, StateFunc instructionExecDoRange, e1] : es, int = is} + else state {exec = Block [GeneInt 0, GeneInt $ i1 - 1, StateFunc instructionExecDoRange, e1] : es, int = is} instructionExecDoCount state = state instructionExecDoTimes :: State -> State instructionExecDoTimes state@(State (e1 : es) (i1 : is) fs bs ss ps im) = if i1 < 1 then state - else state {exec = Block [IntGene 0, IntGene $ i1 - 1, StateFunc instructionExecDoRange, Block [StateFunc instructionIntPop, e1]] : es, int = is} + else state {exec = Block [GeneInt 0, GeneInt $ i1 - 1, StateFunc instructionExecDoRange, Block [StateFunc instructionIntPop, e1]] : es, int = is} instructionExecDoTimes state = state instructionExecWhile :: State -> State @@ -188,10 +188,10 @@ instructionExecWhen state = state -- Optionally, split this off into independent functions instructionParameterLoad :: State -> State instructionParameterLoad (State es is fs bs ss (p : ps) im) = case p of - (IntGene val) -> State es (val : is) fs bs ss ps im - (FloatGene val) -> State es is (val : fs) bs ss ps im - (BoolGene val) -> State es is fs (val : bs) ss ps im - (StringGene val) -> State es is fs bs (val : ss) ps im + (GeneInt val) -> State es (val : is) fs bs ss ps im + (GeneFloat val) -> State es is (val : fs) bs ss ps im + (GeneBool val) -> State es is fs (val : bs) ss ps im + (GeneString val) -> State es is fs bs (val : ss) ps im instructionParameterLoad state = state -- Loads a genome into the exec stack @@ -212,10 +212,10 @@ interpretExec :: State -> State interpretExec (State [] is fs bs ss ps im) = State [] is fs bs ss ps im interpretExec (State (e : es) is fs bs ss ps im) = case e of - (IntGene val) -> interpretExec (State es (val : is) fs bs ss ps im) - (FloatGene val) -> interpretExec (State es is (val : fs) bs ss ps im) - (BoolGene val) -> interpretExec (State es is fs (val : bs) ss ps im) - (StringGene val) -> interpretExec (State es is fs bs (val : ss) ps im) + (GeneInt val) -> interpretExec (State es (val : is) fs bs ss ps im) + (GeneFloat val) -> interpretExec (State es is (val : fs) bs ss ps im) + (GeneBool val) -> interpretExec (State es is fs (val : bs) ss ps im) + (GeneString val) -> interpretExec (State es is fs bs (val : ss) ps im) (StateFunc func) -> interpretExec (func (State es is fs bs ss ps im)) (Block block) -> interpretExec (State (block ++ es) is fs bs ss ps im) (PlaceInput input) -> interpretExec (State (im Map.! input : es) is fs bs ss ps im) diff --git a/tests/Main.hs b/tests/Main.hs index 47e462d..d101105 100644 --- a/tests/Main.hs +++ b/tests/Main.hs @@ -7,21 +7,20 @@ intTestFunc name goal genome startState = let state = loadProgram genome startState in assert (goal == int (interpretExec state)) putStrLn (name ++ " passed test.") - main :: IO () main = do - intTestFunc "instructionIntAdd" [8] [IntGene 6, IntGene 2, StateFunc instructionIntAdd] emptyState - intTestFunc "instructionIntSub" [4] [IntGene 6, IntGene 2, StateFunc instructionIntSub] emptyState - intTestFunc "instructionIntMul" [12] [IntGene 6, IntGene 2, StateFunc instructionIntMul] emptyState - intTestFunc "instructionIntDiv" [3] [IntGene 6, IntGene 2, StateFunc instructionIntDiv] emptyState - intTestFunc "instructionExecIf" [6, 5] [BoolGene True, StateFunc instructionExecIf, Block [IntGene 5, IntGene 6], Block [IntGene 7, IntGene 8]] emptyState - intTestFunc "instructionExecDup" [8] [StateFunc instructionExecDup, IntGene 4, StateFunc instructionIntAdd] emptyState - intTestFunc "instructionExecDoRange" [12] [IntGene 2, Block [IntGene 4, IntGene 1, StateFunc instructionExecDoRange], StateFunc instructionIntAdd] emptyState - intTestFunc "instructionExecDoCount" [8] [IntGene 2, Block [IntGene 4, StateFunc instructionExecDoCount], StateFunc instructionIntAdd] emptyState - intTestFunc "instructionIntAdd" [69, 69, 69, 69, 2] [IntGene 2, Block [IntGene 4, StateFunc instructionExecDoTimes], IntGene 69] emptyState - intTestFunc "instructionExecDoTimes" [70, 70] [BoolGene False, BoolGene True, BoolGene True, StateFunc instructionExecWhile, IntGene 70] emptyState - intTestFunc "instructionExecWhile" [70, 70, 70] [BoolGene False, BoolGene True, BoolGene True, StateFunc instructionExecDoWhile, IntGene 70] emptyState - intTestFunc "instructionExecDoWhile" [71] [BoolGene True, StateFunc instructionExecWhen, IntGene 71] emptyState + intTestFunc "instructionIntAdd" [8] [GeneInt 6, GeneInt 2, StateFunc instructionIntAdd] emptyState + intTestFunc "instructionIntSub" [4] [GeneInt 6, GeneInt 2, StateFunc instructionIntSub] emptyState + intTestFunc "instructionIntMul" [12] [GeneInt 6, GeneInt 2, StateFunc instructionIntMul] emptyState + intTestFunc "instructionIntDiv" [3] [GeneInt 6, GeneInt 2, StateFunc instructionIntDiv] emptyState + intTestFunc "instructionExecIf" [6, 5] [GeneBool True, StateFunc instructionExecIf, Block [GeneInt 5, GeneInt 6], Block [GeneInt 7, GeneInt 8]] emptyState + intTestFunc "instructionExecDup" [8] [StateFunc instructionExecDup, GeneInt 4, StateFunc instructionIntAdd] emptyState + intTestFunc "instructionExecDoRange" [12] [GeneInt 2, Block [GeneInt 4, GeneInt 1, StateFunc instructionExecDoRange], StateFunc instructionIntAdd] emptyState + intTestFunc "instructionExecDoCount" [8] [GeneInt 2, Block [GeneInt 4, StateFunc instructionExecDoCount], StateFunc instructionIntAdd] emptyState + intTestFunc "instructionIntAdd" [69, 69, 69, 69, 2] [GeneInt 2, Block [GeneInt 4, StateFunc instructionExecDoTimes], GeneInt 69] emptyState + intTestFunc "instructionExecDoTimes" [70, 70] [GeneBool False, GeneBool True, GeneBool True, StateFunc instructionExecWhile, GeneInt 70] emptyState + intTestFunc "instructionExecWhile" [70, 70, 70] [GeneBool False, GeneBool True, GeneBool True, StateFunc instructionExecDoWhile, GeneInt 70] emptyState + intTestFunc "instructionExecDoWhile" [71] [GeneBool True, StateFunc instructionExecWhen, GeneInt 71] emptyState - let loadedState = loadProgram [BoolGene False, StateFunc instructionExecWhen, IntGene 71] emptyState + let loadedState = loadProgram [GeneBool False, StateFunc instructionExecWhen, GeneInt 71] emptyState assert (emptyState == interpretExec loadedState) putStrLn "instructionExecWhen passed test." From 86fc353738356698d39c33429ca6ceaeaa32bba6 Mon Sep 17 00:00:00 2001 From: Taylor Date: Thu, 16 Jan 2025 13:14:08 -0600 Subject: [PATCH 2/5] cabal co-exists beside Makefile --- .gitignore | 1 + Makefile | 17 +++++++++-------- src/.ghci | 1 - src/Main.hs | 5 ----- src/Push.hs | 2 +- tests/.ghci | 3 --- tests/Main.hs | 26 -------------------------- 7 files changed, 11 insertions(+), 44 deletions(-) delete mode 100644 src/Main.hs delete mode 100644 tests/.ghci delete mode 100644 tests/Main.hs diff --git a/.gitignore b/.gitignore index 683c20e..807514f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +dist-* *$py.class **/*.DS_Store **/*__pycache__ diff --git a/Makefile b/Makefile index 1b84f2a..0dea7bb 100644 --- a/Makefile +++ b/Makefile @@ -8,25 +8,26 @@ run: target/Main.out # Runs your compiled main code. ./target/Main.out target/Main.out: src/* - ghc -g -fprof-auto -prof -Wall src/*.hs -o target/Main.out + ghc -g -fprof-auto -prof -Wall app/*.hs src/*.hs -o target/Main.out @rm -f src/*.o src/*.hi -test: tests/*.hs # Runs unit tests. - runghc -i./src/ tests/Main.hs +test: test/*.hs # Runs unit tests. + runghc -i./src/ test/Main.hs format: src/* # Formats code using ormolu. - ormolu --mode inplace src/*.hs tests/*.hs + ormolu --mode inplace app/*.hs src/*.hs test/*.hs hlint: src/*.hs # HLint for lint suggestions. hlint src/*.hs stan: src/*.hs # Stan for more optimization suggestions. - ghc -fwrite-ide-info src/*.hs -o target/temp.out + ghc -fwrite-ide-info app/*.hs src/*.hs -o target/temp.out stan --hiedir src/ - rm -f target/temp.out src/*.hi src/*.o src/*.hie + rm -f target/temp.out src/*.hi src/*.o src/*.hie app/*.o app/*.hi app/*.hie clean: # Cleans up all the generated logfiles and outfiles. @rm -rf *.out *.o *.hi @rm -rf target/* - @rm -rf */*.out */*.o */*.hi - @rm -rf */*/*.out */*/*.o */*/*.hi + @rm -rf */*.out */*.o */*.hi */*.hie + @rm -rf */*/*.out */*/*.o */*/*.hi */*.hie + @rm -rf dist-* diff --git a/src/.ghci b/src/.ghci index 44a0883..96db894 100644 --- a/src/.ghci +++ b/src/.ghci @@ -1,3 +1,2 @@ :set stop :list :set prompt "\ESC[1;34m%s \ESC[0;35mλ>\ESC[m " -:load Main diff --git a/src/Main.hs b/src/Main.hs deleted file mode 100644 index 56457c9..0000000 --- a/src/Main.hs +++ /dev/null @@ -1,5 +0,0 @@ -import GP -import Push - -main :: IO () -main = do pure () diff --git a/src/Push.hs b/src/Push.hs index 3154933..383fb80 100644 --- a/src/Push.hs +++ b/src/Push.hs @@ -1,6 +1,6 @@ module Push where -import qualified Data.Map as Map +import Data.Map qualified as Map -- import Debug.Trace (trace, traceStack) diff --git a/tests/.ghci b/tests/.ghci deleted file mode 100644 index d5be5bc..0000000 --- a/tests/.ghci +++ /dev/null @@ -1,3 +0,0 @@ -:set stop :list -:set prompt "\ESC[1;34m%s \ESC[0;35mλ>\ESC[m " -:load Main ../src/Push ../src/GP diff --git a/tests/Main.hs b/tests/Main.hs deleted file mode 100644 index d101105..0000000 --- a/tests/Main.hs +++ /dev/null @@ -1,26 +0,0 @@ -import Control.Exception (assert) -import GP -import Push - -intTestFunc :: String -> [Int] -> [Gene] -> State -> IO () -intTestFunc name goal genome startState = - let state = loadProgram genome startState - in assert (goal == int (interpretExec state)) putStrLn (name ++ " passed test.") - -main :: IO () -main = do - intTestFunc "instructionIntAdd" [8] [GeneInt 6, GeneInt 2, StateFunc instructionIntAdd] emptyState - intTestFunc "instructionIntSub" [4] [GeneInt 6, GeneInt 2, StateFunc instructionIntSub] emptyState - intTestFunc "instructionIntMul" [12] [GeneInt 6, GeneInt 2, StateFunc instructionIntMul] emptyState - intTestFunc "instructionIntDiv" [3] [GeneInt 6, GeneInt 2, StateFunc instructionIntDiv] emptyState - intTestFunc "instructionExecIf" [6, 5] [GeneBool True, StateFunc instructionExecIf, Block [GeneInt 5, GeneInt 6], Block [GeneInt 7, GeneInt 8]] emptyState - intTestFunc "instructionExecDup" [8] [StateFunc instructionExecDup, GeneInt 4, StateFunc instructionIntAdd] emptyState - intTestFunc "instructionExecDoRange" [12] [GeneInt 2, Block [GeneInt 4, GeneInt 1, StateFunc instructionExecDoRange], StateFunc instructionIntAdd] emptyState - intTestFunc "instructionExecDoCount" [8] [GeneInt 2, Block [GeneInt 4, StateFunc instructionExecDoCount], StateFunc instructionIntAdd] emptyState - intTestFunc "instructionIntAdd" [69, 69, 69, 69, 2] [GeneInt 2, Block [GeneInt 4, StateFunc instructionExecDoTimes], GeneInt 69] emptyState - intTestFunc "instructionExecDoTimes" [70, 70] [GeneBool False, GeneBool True, GeneBool True, StateFunc instructionExecWhile, GeneInt 70] emptyState - intTestFunc "instructionExecWhile" [70, 70, 70] [GeneBool False, GeneBool True, GeneBool True, StateFunc instructionExecDoWhile, GeneInt 70] emptyState - intTestFunc "instructionExecDoWhile" [71] [GeneBool True, StateFunc instructionExecWhen, GeneInt 71] emptyState - - let loadedState = loadProgram [GeneBool False, StateFunc instructionExecWhen, GeneInt 71] emptyState - assert (emptyState == interpretExec loadedState) putStrLn "instructionExecWhen passed test." From cef2dc79a7a6d079db70b33d2f7602f107c24f94 Mon Sep 17 00:00:00 2001 From: Taylor Date: Thu, 16 Jan 2025 13:14:14 -0600 Subject: [PATCH 3/5] cabal co-exists beside Makefile --- HushGP.cabal | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++ app/.ghci | 3 ++ app/Main.hs | 5 +++ test/.ghci | 3 ++ test/Main.hs | 26 +++++++++++++ 5 files changed, 142 insertions(+) create mode 100644 HushGP.cabal create mode 100644 app/.ghci create mode 100644 app/Main.hs create mode 100644 test/.ghci create mode 100644 test/Main.hs diff --git a/HushGP.cabal b/HushGP.cabal new file mode 100644 index 0000000..717043a --- /dev/null +++ b/HushGP.cabal @@ -0,0 +1,105 @@ +cabal-version: 3.4 +-- The cabal-version field refers to the version of the .cabal specification, +-- and can be different from the cabal-install (the tool) version and the +-- Cabal (the library) version you are using. As such, the Cabal (the library) +-- version used must be equal or greater than the version stated in this field. +-- Starting from the specification version 2.2, the cabal-version field must be +-- the first thing in the cabal file. + +-- The name of the package. +name: HushGP + +-- The package version. +-- PVP summary: +-+------- breaking API changes +-- | | +----- non-breaking API additions +-- | | | +--- code changes with no API change +version: 0.1.0.0 + +-- A short (one-line) description of the package. +synopsis: A PushGP implementation in Haskell. + +-- The package author(s). +author: Taylor + +-- An email address to which users can send suggestions, bug reports, and patches. +maintainer: behindthebrain@zoho.eu + +category: Data +build-type: Simple + +common warnings + ghc-options: -Wall + +library + -- Import common warning flags. + import: warnings + + -- Modules exported by the library. + exposed-modules: Push, GP + + -- Modules included in this library but not exported. + -- other-modules: + + -- LANGUAGE extensions used by modules in this package. + -- other-extensions: + + -- Other library packages from which modules are imported. + build-depends: + base ^>=4.18.2.1, containers + + -- Directories containing source files. + hs-source-dirs: src + + -- Base language which the package is written in. + default-language: GHC2021 + +executable HushGP + -- Import common warning flags. + import: warnings + + -- .hs or .lhs file containing the Main module. + main-is: Main.hs + + -- Modules included in this executable, other than Main. + -- other-modules: + + -- LANGUAGE extensions used by modules in this package. + -- other-extensions: + + -- Other library packages from which modules are imported. + build-depends: + base ^>=4.18.2.1, + HushGP + + -- Directories containing source files. + hs-source-dirs: app + + -- Base language which the package is written in. + default-language: GHC2021 + +test-suite HushGP-test + -- Import common warning flags. + import: warnings + + -- Base language which the package is written in. + default-language: GHC2021 + + -- Modules included in this executable, other than Main. + -- other-modules: + + -- LANGUAGE extensions used by modules in this package. + -- other-extensions: + + -- The interface type and version of the test suite. + type: exitcode-stdio-1.0 + + -- Directories containing source files. + hs-source-dirs: test + + -- The entrypoint to the test suite. + main-is: Main.hs + + -- Test dependencies. + build-depends: + base ^>=4.18.2.1, + HushGP diff --git a/app/.ghci b/app/.ghci new file mode 100644 index 0000000..478f0d4 --- /dev/null +++ b/app/.ghci @@ -0,0 +1,3 @@ +:set stop :list +:set prompt "\ESC[1;34m%s \ESC[0;35mλ>\ESC[m " +:load Main ../src/GP ../src/Push diff --git a/app/Main.hs b/app/Main.hs new file mode 100644 index 0000000..56457c9 --- /dev/null +++ b/app/Main.hs @@ -0,0 +1,5 @@ +import GP +import Push + +main :: IO () +main = do pure () diff --git a/test/.ghci b/test/.ghci new file mode 100644 index 0000000..478f0d4 --- /dev/null +++ b/test/.ghci @@ -0,0 +1,3 @@ +:set stop :list +:set prompt "\ESC[1;34m%s \ESC[0;35mλ>\ESC[m " +:load Main ../src/GP ../src/Push diff --git a/test/Main.hs b/test/Main.hs new file mode 100644 index 0000000..d101105 --- /dev/null +++ b/test/Main.hs @@ -0,0 +1,26 @@ +import Control.Exception (assert) +import GP +import Push + +intTestFunc :: String -> [Int] -> [Gene] -> State -> IO () +intTestFunc name goal genome startState = + let state = loadProgram genome startState + in assert (goal == int (interpretExec state)) putStrLn (name ++ " passed test.") + +main :: IO () +main = do + intTestFunc "instructionIntAdd" [8] [GeneInt 6, GeneInt 2, StateFunc instructionIntAdd] emptyState + intTestFunc "instructionIntSub" [4] [GeneInt 6, GeneInt 2, StateFunc instructionIntSub] emptyState + intTestFunc "instructionIntMul" [12] [GeneInt 6, GeneInt 2, StateFunc instructionIntMul] emptyState + intTestFunc "instructionIntDiv" [3] [GeneInt 6, GeneInt 2, StateFunc instructionIntDiv] emptyState + intTestFunc "instructionExecIf" [6, 5] [GeneBool True, StateFunc instructionExecIf, Block [GeneInt 5, GeneInt 6], Block [GeneInt 7, GeneInt 8]] emptyState + intTestFunc "instructionExecDup" [8] [StateFunc instructionExecDup, GeneInt 4, StateFunc instructionIntAdd] emptyState + intTestFunc "instructionExecDoRange" [12] [GeneInt 2, Block [GeneInt 4, GeneInt 1, StateFunc instructionExecDoRange], StateFunc instructionIntAdd] emptyState + intTestFunc "instructionExecDoCount" [8] [GeneInt 2, Block [GeneInt 4, StateFunc instructionExecDoCount], StateFunc instructionIntAdd] emptyState + intTestFunc "instructionIntAdd" [69, 69, 69, 69, 2] [GeneInt 2, Block [GeneInt 4, StateFunc instructionExecDoTimes], GeneInt 69] emptyState + intTestFunc "instructionExecDoTimes" [70, 70] [GeneBool False, GeneBool True, GeneBool True, StateFunc instructionExecWhile, GeneInt 70] emptyState + intTestFunc "instructionExecWhile" [70, 70, 70] [GeneBool False, GeneBool True, GeneBool True, StateFunc instructionExecDoWhile, GeneInt 70] emptyState + intTestFunc "instructionExecDoWhile" [71] [GeneBool True, StateFunc instructionExecWhen, GeneInt 71] emptyState + + let loadedState = loadProgram [GeneBool False, StateFunc instructionExecWhen, GeneInt 71] emptyState + assert (emptyState == interpretExec loadedState) putStrLn "instructionExecWhen passed test." From d02727184a0c136fb541d2da254f07f5d15837c7 Mon Sep 17 00:00:00 2001 From: Taylor Date: Thu, 16 Jan 2025 13:21:48 -0600 Subject: [PATCH 4/5] makefile cleanup, taking a break now --- Makefile | 10 +++++----- README.md | 1 - 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 0dea7bb..bd281ee 100644 --- a/Makefile +++ b/Makefile @@ -7,20 +7,20 @@ help: # Show help for each of the commented Makefile recipes. run: target/Main.out # Runs your compiled main code. ./target/Main.out -target/Main.out: src/* +target/Main.out: src/* app/* ghc -g -fprof-auto -prof -Wall app/*.hs src/*.hs -o target/Main.out @rm -f src/*.o src/*.hi -test: test/*.hs # Runs unit tests. +test: # Runs unit tests. runghc -i./src/ test/Main.hs -format: src/* # Formats code using ormolu. +format: # Formats code using ormolu. ormolu --mode inplace app/*.hs src/*.hs test/*.hs -hlint: src/*.hs # HLint for lint suggestions. +hlint: # HLint for lint suggestions. hlint src/*.hs -stan: src/*.hs # Stan for more optimization suggestions. +stan: # Stan for more optimization suggestions. ghc -fwrite-ide-info app/*.hs src/*.hs -o target/temp.out stan --hiedir src/ rm -f target/temp.out src/*.hi src/*.o src/*.hie app/*.o app/*.hi app/*.hie diff --git a/README.md b/README.md index d51000a..8e90e25 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ A PushGP implementation in Haskell ## Tasks -* [ ] refactor Gene to contain *Gene to Gene* for naming consistency. * [x] Do test-driven development on this one. * [x] Write tests for every function. * [x] tests/ are just copied from make-grade, need to write for this project. From 6257320e0b938a0f696c644a2af1ca566f500220 Mon Sep 17 00:00:00 2001 From: Taylor Date: Thu, 16 Jan 2025 13:23:58 -0600 Subject: [PATCH 5/5] makefile cleanup, taking a break now --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8e90e25..d9e2b3c 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ A PushGP implementation in Haskell ## Tasks +* [ ] Post minimal core of exec to haskell discourse for advice about speed optimization. * [x] Do test-driven development on this one. * [x] Write tests for every function. * [x] tests/ are just copied from make-grade, need to write for this project.