TEMPLATE HASKELL git statusgit statusgit statusgit status
This commit is contained in:
parent
84e5c7b1df
commit
437c99c946
@ -28,7 +28,7 @@ category: Data
|
|||||||
build-type: Simple
|
build-type: Simple
|
||||||
|
|
||||||
common warnings
|
common warnings
|
||||||
ghc-options: -Wall
|
ghc-options: -Wall -XTemplateHaskell
|
||||||
|
|
||||||
library
|
library
|
||||||
-- Import common warning flags.
|
-- Import common warning flags.
|
||||||
@ -57,6 +57,7 @@ library
|
|||||||
, HushGP.PushTests.IntTests
|
, HushGP.PushTests.IntTests
|
||||||
, HushGP.PushTests.GenericTests
|
, HushGP.PushTests.GenericTests
|
||||||
, HushGP.PushTests.UtilTests
|
, HushGP.PushTests.UtilTests
|
||||||
|
, HushGP.TH
|
||||||
|
|
||||||
-- Modules included in this library but not exported.
|
-- Modules included in this library but not exported.
|
||||||
-- other-modules:
|
-- other-modules:
|
||||||
@ -66,7 +67,7 @@ library
|
|||||||
|
|
||||||
-- Other library packages from which modules are imported.
|
-- Other library packages from which modules are imported.
|
||||||
build-depends:
|
build-depends:
|
||||||
base, containers, lens, split, QuickCheck
|
base, containers, lens, split, QuickCheck, regex-tdfa, template-haskell
|
||||||
|
|
||||||
-- Directories containing source files.
|
-- Directories containing source files.
|
||||||
hs-source-dirs: src
|
hs-source-dirs: src
|
||||||
|
2
TODO.md
2
TODO.md
@ -14,7 +14,7 @@
|
|||||||
- [X] Refactor all functions to take state as the final parameter
|
- [X] Refactor all functions to take state as the final parameter
|
||||||
- [X] Standardize the pattern matching parameter names, such as c1 : cs
|
- [X] Standardize the pattern matching parameter names, such as c1 : cs
|
||||||
- [ ] Write unit/quickcheck tests for the generic functions
|
- [ ] Write unit/quickcheck tests for the generic functions
|
||||||
~~[ ] Use template haskell to generate function lists~~
|
- [X] Use template haskell to generate function lists
|
||||||
- [X] Move utility functions to their own file
|
- [X] Move utility functions to their own file
|
||||||
- [ ] Make add/sub/mult/div/mod instructions generic
|
- [ ] Make add/sub/mult/div/mod instructions generic
|
||||||
|
|
||||||
|
@ -12,18 +12,6 @@ module HushGP.Instructions
|
|||||||
module HushGP.Instructions.VectorStringInstructions,
|
module HushGP.Instructions.VectorStringInstructions,
|
||||||
module HushGP.Instructions.VectorBoolInstructions,
|
module HushGP.Instructions.VectorBoolInstructions,
|
||||||
module HushGP.Instructions.VectorCharInstructions,
|
module HushGP.Instructions.VectorCharInstructions,
|
||||||
allIntInstructions,
|
|
||||||
allFloatInstructions,
|
|
||||||
allBoolInstructions,
|
|
||||||
allCharInstructions,
|
|
||||||
allCodeInstructions,
|
|
||||||
allExecInstructions,
|
|
||||||
allStringInstructions,
|
|
||||||
allVectorIntInstructions,
|
|
||||||
allVectorFloatInstructions,
|
|
||||||
allVectorCharInstructions,
|
|
||||||
allVectorStringInstructions,
|
|
||||||
allVectorBoolInstructions,
|
|
||||||
allInstructions,
|
allInstructions,
|
||||||
)
|
)
|
||||||
where
|
where
|
||||||
@ -43,643 +31,7 @@ import HushGP.Instructions.VectorIntInstructions
|
|||||||
import HushGP.Instructions.VectorStringInstructions
|
import HushGP.Instructions.VectorStringInstructions
|
||||||
import HushGP.State
|
import HushGP.State
|
||||||
|
|
||||||
allIntInstructions :: [Gene]
|
-- | All of the instructions declared in all the instruction submodules
|
||||||
allIntInstructions =
|
|
||||||
map
|
|
||||||
StateFunc
|
|
||||||
[ (instructionIntFromFloat, "instructionIntFromFloat"),
|
|
||||||
(instructionIntFromBool, "instructionIntFromBool"),
|
|
||||||
(instructionIntAdd, "instructionIntAdd"),
|
|
||||||
(instructionIntSub, "instructionIntSub"),
|
|
||||||
(instructionIntMul, "instructionIntMul"),
|
|
||||||
(instructionIntDiv, "instructionIntDiv"),
|
|
||||||
(instructionIntMod, "instructionIntMod"),
|
|
||||||
(instructionIntMin, "instructionIntMin"),
|
|
||||||
(instructionIntMax, "instructionIntMax"),
|
|
||||||
(instructionIntInc, "instructionIntInc"),
|
|
||||||
(instructionIntDec, "instructionIntDec"),
|
|
||||||
(instructionIntLT, "instructionIntLT"),
|
|
||||||
(instructionIntGT, "instructionIntGT"),
|
|
||||||
(instructionIntLTE, "instructionIntLTE"),
|
|
||||||
(instructionIntGTE, "instructionIntGTE"),
|
|
||||||
(instructionIntDup, "instructionIntDup"),
|
|
||||||
(instructionIntPop, "instructionIntPop"),
|
|
||||||
(instructionIntDupN, "instructionIntDupN"),
|
|
||||||
(instructionIntSwap, "instructionIntSwap"),
|
|
||||||
(instructionIntRot, "instructionIntRot"),
|
|
||||||
(instructionIntFlush, "instructionIntFlush"),
|
|
||||||
(instructionIntEq, "instructionIntEq"),
|
|
||||||
(instructionIntYank, "instructionIntYank"),
|
|
||||||
(instructionIntYankDup, "instructionIntYankDup"),
|
|
||||||
(instructionIntShove, "instructionIntShove"),
|
|
||||||
(instructionIntIsStackEmpty, "instructionIntIsStackEmpty"),
|
|
||||||
(instructionIntFromChar, "instructionIntFromChar"),
|
|
||||||
(instructionIntFromString, "instructionIntFromString"),
|
|
||||||
(instructionIntDupItems, "instructionIntDupItems")
|
|
||||||
]
|
|
||||||
|
|
||||||
allFloatInstructions :: [Gene]
|
|
||||||
allFloatInstructions =
|
|
||||||
map
|
|
||||||
StateFunc
|
|
||||||
[ (instructionFloatFromInt, "instructionFloatFromInt"),
|
|
||||||
(instructionFloatFromBool, "instructionFloatFromBool"),
|
|
||||||
(instructionFloatAdd, "instructionFloatAdd"),
|
|
||||||
(instructionFloatSub, "instructionFloatSub"),
|
|
||||||
(instructionFloatMul, "instructionFloatMul"),
|
|
||||||
(instructionFloatDiv, "instructionFloatDiv"),
|
|
||||||
(instructionFloatMod, "instructionFloatMod"),
|
|
||||||
(instructionFloatMin, "instructionFloatMin"),
|
|
||||||
(instructionFloatMax, "instructionFloatMax"),
|
|
||||||
(instructionFloatInc, "instructionFloatInc"),
|
|
||||||
(instructionFloatDec, "instructionFloatDec"),
|
|
||||||
(instructionFloatLT, "instructionFloatLT"),
|
|
||||||
(instructionFloatGT, "instructionFloatGT"),
|
|
||||||
(instructionFloatLTE, "instructionFloatLTE"),
|
|
||||||
(instructionFloatGTE, "instructionFloatGTE"),
|
|
||||||
(instructionFloatDup, "instructionFloatDup"),
|
|
||||||
(instructionFloatPop, "instructionFloatPop"),
|
|
||||||
(instructionFloatDupN, "instructionFloatDupN"),
|
|
||||||
(instructionFloatSwap, "instructionFloatSwap"),
|
|
||||||
(instructionFloatRot, "instructionFloatRot"),
|
|
||||||
(instructionFloatFlush, "instructionFloatFlush"),
|
|
||||||
(instructionFloatEq, "instructionFloatEq"),
|
|
||||||
(instructionFloatYank, "instructionFloatYank"),
|
|
||||||
(instructionFloatYankDup, "instructionFloatYankDup"),
|
|
||||||
(instructionFloatShove, "instructionFloatShove"),
|
|
||||||
(instructionFloatIsStackEmpty, "instructionFloatIsStackEmpty"),
|
|
||||||
(instructionFloatFromChar, "instructionFloatFromChar"),
|
|
||||||
(instructionFloatFromString, "instructionFloatFromString"),
|
|
||||||
(instructionFloatDupItems, "instructionFloatDupItems")
|
|
||||||
]
|
|
||||||
|
|
||||||
allBoolInstructions :: [Gene]
|
|
||||||
allBoolInstructions =
|
|
||||||
map
|
|
||||||
StateFunc
|
|
||||||
[ (instructionBoolFromInt, "instructionBoolFromInt"),
|
|
||||||
(instructionBoolFromFloat, "instructionBoolFromFloat"),
|
|
||||||
(instructionBoolAnd, "instructionBoolAnd"),
|
|
||||||
(instructionBoolInvertFirstThenAnd, "instructionBoolInvertFirstThenAnd"),
|
|
||||||
(instructionBoolInvertSecondThenAnd, "instructionBoolInvertSecondThenAnd"),
|
|
||||||
(instructionBoolOr, "instructionBoolOr"),
|
|
||||||
(instructionBoolXor, "instructionBoolXor"),
|
|
||||||
(instructionBoolPop, "instructionBoolPop"),
|
|
||||||
(instructionBoolDup, "instructionBoolDup"),
|
|
||||||
(instructionBoolDupN, "instructionBoolDupN"),
|
|
||||||
(instructionBoolSwap, "instructionBoolSwap"),
|
|
||||||
(instructionBoolRot, "instructionBoolRot"),
|
|
||||||
(instructionBoolFlush, "instructionBoolFlush"),
|
|
||||||
(instructionBoolEq, "instructionBoolEq"),
|
|
||||||
(instructionBoolStackDepth, "instructionBoolStackDepth"),
|
|
||||||
(instructionBoolYank, "instructionBoolYank"),
|
|
||||||
(instructionBoolYankDup, "instructionBoolYankDup"),
|
|
||||||
(instructionBoolShove, "instructionBoolShove"),
|
|
||||||
(instructionBoolShoveDup, "instructionBoolShoveDup"),
|
|
||||||
(instructionBoolIsStackEmpty, "instructionBoolIsStackEmpty"),
|
|
||||||
(instructionBoolDupItems, "instructionBoolDupItems")
|
|
||||||
]
|
|
||||||
|
|
||||||
allCharInstructions :: [Gene]
|
|
||||||
allCharInstructions =
|
|
||||||
map
|
|
||||||
StateFunc
|
|
||||||
[ (instructionCharConcat, "instructionCharConcat"),
|
|
||||||
(instructionCharFromFirstChar, "instructionCharFromFirstChar"),
|
|
||||||
(instructionCharFromLastChar, "instructionCharFromLastChar"),
|
|
||||||
(instructionCharFromNthChar, "instructionCharFromNthChar"),
|
|
||||||
(instructionCharIsWhitespace, "instructionCharIsWhitespace"),
|
|
||||||
(instructionCharIsLetter, "instructionCharIsLetter"),
|
|
||||||
(instructionCharIsDigit, "instructionCharIsDigit"),
|
|
||||||
(instructionCharFromBool, "instructionCharFromBool"),
|
|
||||||
(instructionCharFromAsciiInt, "instructionCharFromAsciiInt"),
|
|
||||||
(instructionCharFromAsciiFloat, "instructionCharFromAsciiFloat"),
|
|
||||||
(instructionCharsFromString, "instructionCharsFromString"),
|
|
||||||
(instructionCharPop, "instructionCharPop"),
|
|
||||||
(instructionCharDup, "instructionCharDup"),
|
|
||||||
(instructionCharDupN, "instructionCharDupN"),
|
|
||||||
(instructionCharSwap, "instructionCharSwap"),
|
|
||||||
(instructionCharRot, "instructionCharRot"),
|
|
||||||
(instructionCharFlush, "instructionCharFlush"),
|
|
||||||
(instructionCharEq, "instructionCharEq"),
|
|
||||||
(instructionCharStackDepth, "instructionCharStackDepth"),
|
|
||||||
(instructionCharYank, "instructionCharYank"),
|
|
||||||
(instructionCharYankDup, "instructionCharYankDup"),
|
|
||||||
(instructionCharShove, "instructionCharShove"),
|
|
||||||
(instructionCharShoveDup, "instructionCharShoveDup"),
|
|
||||||
(instructionCharIsStackEmpty, "instructionCharIsStackEmpty"),
|
|
||||||
(instructionCharDupItems, "instructionCharDupItems")
|
|
||||||
]
|
|
||||||
|
|
||||||
allCodeInstructions :: [Gene]
|
|
||||||
allCodeInstructions =
|
|
||||||
map
|
|
||||||
StateFunc
|
|
||||||
[ (instructionCodePop, "instructionCodePop"),
|
|
||||||
(instructionCodeIsCodeBlock, "instructionCodeIsCodeBlock"),
|
|
||||||
(instructionCodeIsSingular, "instructionCodeIsSingular"),
|
|
||||||
(instructionCodeLength, "instructionCodeLength"),
|
|
||||||
(instructionCodeFirst, "instructionCodeFirst"),
|
|
||||||
(instructionCodeLast, "instructionCodeLast"),
|
|
||||||
(instructionCodeTail, "instructionCodeTail"),
|
|
||||||
(instructionCodeInit, "instructionCodeInit"),
|
|
||||||
(instructionCodeWrap, "instructionCodeWrap"),
|
|
||||||
(instructionCodeList, "instructionCodeList"),
|
|
||||||
(instructionCodeCombine, "instructionCodeCombine"),
|
|
||||||
(instructionCodeDo, "instructionCodeDo"),
|
|
||||||
(instructionCodeDoDup, "instructionCodeDoDup"),
|
|
||||||
(instructionCodeDoThenPop, "instructionCodeDoThenPop"),
|
|
||||||
(instructionCodeDoRange, "instructionCodeDoRange"),
|
|
||||||
(instructionCodeDoCount, "instructionCodeDoCount"),
|
|
||||||
(instructionCodeDoTimes, "instructionCodeDoTimes"),
|
|
||||||
(instructionCodeIf, "instructionCodeIf"),
|
|
||||||
(instructionCodeWhen, "instructionCodeWhen"),
|
|
||||||
(instructionCodeMember, "instructionCodeMember"),
|
|
||||||
(instructionCodeN, "instructionCodeN"),
|
|
||||||
(instructionMakeEmptyCodeBlock, "instructionMakeEmptyCodeBlock"),
|
|
||||||
(instructionIsEmptyCodeBlock, "instructionIsEmptyCodeBlock"),
|
|
||||||
(instructionCodeSize, "instructionCodeSize"),
|
|
||||||
(instructionCodeExtract, "instructionCodeExtract"),
|
|
||||||
(instructionCodeInsert, "instructionCodeInsert"),
|
|
||||||
(instructionCodeFirstPosition, "instructionCodeFirstPosition"),
|
|
||||||
(instructionCodeReverse, "instructionCodeReverse"),
|
|
||||||
(instructionCodeDup, "instructionCodeDup"),
|
|
||||||
(instructionCodeDupN, "instructionCodeDupN"),
|
|
||||||
(instructionCodeDup, "instructionCodeDup"),
|
|
||||||
(instructionCodeDupN, "instructionCodeDupN"),
|
|
||||||
(instructionCodeSwap, "instructionCodeSwap"),
|
|
||||||
(instructionCodeRot, "instructionCodeRot"),
|
|
||||||
(instructionCodeFlush, "instructionCodeFlush"),
|
|
||||||
(instructionCodeEq, "instructionCodeEq"),
|
|
||||||
(instructionCodeStackDepth, "instructionCodeStackDepth"),
|
|
||||||
(instructionCodeYank, "instructionCodeYank"),
|
|
||||||
(instructionCodeYankDup, "instructionCodeYankDup"),
|
|
||||||
(instructionCodeShove, "instructionCodeShove"),
|
|
||||||
(instructionCodeShoveDup, "instructionCodeShoveDup"),
|
|
||||||
(instructionCodeIsStackEmpty, "instructionCodeIsStackEmpty"),
|
|
||||||
(instructionCodeFromBool, "instructionCodeFromBool"),
|
|
||||||
(instructionCodeFromInt, "instructionCodeFromInt"),
|
|
||||||
(instructionCodeFromChar, "instructionCodeFromChar"),
|
|
||||||
(instructionCodeFromFloat, "instructionCodeFromFloat"),
|
|
||||||
(instructionCodeFromString, "instructionCodeFromString"),
|
|
||||||
(instructionCodeFromVectorInt, "instructionCodeFromVectorInt"),
|
|
||||||
(instructionCodeFromVectorFloat, "instructionCodeFromVectorFloat"),
|
|
||||||
(instructionCodeFromVectorString, "instructionCodeFromVectorString"),
|
|
||||||
(instructionCodeFromVectorBool, "instructionCodeFromVectorBool"),
|
|
||||||
(instructionCodeFromVectorChar, "instructionCodeFromVectorChar"),
|
|
||||||
(instructionCodeFromExec, "instructionCodeFromExec"),
|
|
||||||
(instructionCodeContainer, "instructionCodeContainer"),
|
|
||||||
(instructionCodeDiscrepancy, "instructionCodeDiscrepancy"),
|
|
||||||
(instructionCodeNoOp, "instructionCodeNoOp"),
|
|
||||||
(instructionCodeTailN, "instructionCodeTailN"),
|
|
||||||
(instructionCodeDupItems, "instructionCodeDupItems")
|
|
||||||
]
|
|
||||||
|
|
||||||
allExecInstructions :: [Gene]
|
|
||||||
allExecInstructions =
|
|
||||||
map
|
|
||||||
StateFunc
|
|
||||||
[ (instructionExecIf, "instructionExecIf"),
|
|
||||||
(instructionExecDup, "instructionExecDup"),
|
|
||||||
(instructionExecDupN, "instructionExecDupN"),
|
|
||||||
(instructionExecPop, "instructionExecPop"),
|
|
||||||
(instructionExecSwap, "instructionExecSwap"),
|
|
||||||
(instructionExecRot, "instructionExecRot"),
|
|
||||||
(instructionExecFlush, "instructionExecFlush"),
|
|
||||||
(instructionExecEq, "instructionExecEq"),
|
|
||||||
(instructionExecStackDepth, "instructionExecStackDepth"),
|
|
||||||
(instructionExecYank, "instructionExecYank"),
|
|
||||||
(instructionExecYankDup, "instructionExecYankDup"),
|
|
||||||
(instructionExecShove, "instructionExecShove"),
|
|
||||||
(instructionExecShoveDup, "instructionExecShoveDup"),
|
|
||||||
(instructionExecIsStackEmpty, "instructionExecIsStackEmpty"),
|
|
||||||
(instructionExecDoRange, "instructionExecDoRange"),
|
|
||||||
(instructionExecDoCount, "instructionExecDoCount"),
|
|
||||||
(instructionExecDoTimes, "instructionExecDoTimes"),
|
|
||||||
(instructionExecWhile, "instructionExecWhile"),
|
|
||||||
(instructionExecDoWhile, "instructionExecDoWhile"),
|
|
||||||
(instructionExecWhen, "instructionExecWhen"),
|
|
||||||
(instructionExecK, "instructionExecK"),
|
|
||||||
(instructionExecS, "instructionExecS"),
|
|
||||||
(instructionExecY, "instrucitonExecY"),
|
|
||||||
(instructionExecDupItems, "instructionExecDupItems")
|
|
||||||
]
|
|
||||||
|
|
||||||
allStringInstructions :: [Gene]
|
|
||||||
allStringInstructions =
|
|
||||||
map
|
|
||||||
StateFunc
|
|
||||||
[ (instructionStringConcat, "instructionStringConcat"),
|
|
||||||
(instructionStringSwap, "instructionStringSwap"),
|
|
||||||
(instructionStringInsertString, "instructionStringInsertString"),
|
|
||||||
(instructionStringFromFirstChar, "instructionStringFromFirstChar"),
|
|
||||||
(instructionStringFromLastChar, "instructionStringFromLastChar"),
|
|
||||||
(instructionStringFromNthChar, "instructionStringFromNthChar"),
|
|
||||||
(instructionStringIndexOfString, "instructionStringIndexOfString"),
|
|
||||||
(instructionStringContainsString, "instructionStringContainsString"),
|
|
||||||
(instructionStringSplitOnString, "instructionStringSplitOnString"),
|
|
||||||
(instructionStringReplaceFirstString, "instructionStringReplaceFirstString"),
|
|
||||||
(instructionStringReplaceNString, "instructionStringReplaceNString"),
|
|
||||||
(instructionStringReplaceAllString, "instructionStringReplaceAllString"),
|
|
||||||
(instructionStringRemoveFirstString, "instructionStringRemoveFirstString"),
|
|
||||||
(instructionStringRemoveNString, "instructionStringRemoveNString"),
|
|
||||||
(instructionStringRemoveAllString, "instructionStringRemoveAllString"),
|
|
||||||
(instructionStringOccurrencesOfString, "instructionStringOccurrencesOfString"),
|
|
||||||
(instructionStringInsertChar, "instructionStringInsertChar"),
|
|
||||||
(instructionStringContainsChar, "instructionStringContainsChar"),
|
|
||||||
(instructionStringIndexOfChar, "instructionStringIndexOfChar"),
|
|
||||||
(instructionStringSplitOnChar, "instructionStringSplitOnChar"),
|
|
||||||
(instructionStringReplaceFirstChar, "instructionStringReplaceFirstChar"),
|
|
||||||
(instructionStringReplaceNChar, "instructionStringReplaceNChar"),
|
|
||||||
(instructionStringReplaceAllChar, "instructionStringReplaceAllChar"),
|
|
||||||
(instructionStringRemoveFirstChar, "instructionStringRemoveFirstChar"),
|
|
||||||
(instructionStringRemoveNChar, "instructionStringRemoveNChar"),
|
|
||||||
(instructionStringRemoveAllChar, "instructionStringRemoveAllChar"),
|
|
||||||
(instructionStringOccurrencesOfChar, "instructionStringOccurrencesOfChar"),
|
|
||||||
(instructionStringReverse, "instructionStringReverse"),
|
|
||||||
(instructionStringHead, "instructionStringHead"),
|
|
||||||
(instructionStringTail, "instructionStringTail"),
|
|
||||||
(instructionStringPrependChar, "instructionStringPrependChar"),
|
|
||||||
(instructionStringAppendChar, "instructionStringAppendChar"),
|
|
||||||
(instructionStringRest, "instructionStringRest"),
|
|
||||||
(instructionStringButLast, "instructionStringButLast"),
|
|
||||||
(instructionStringDrop, "instructionStringDrop"),
|
|
||||||
(instructionStringButLastN, "instructionStringButLastN"),
|
|
||||||
(instructionStringLength, "instructionStringLength"),
|
|
||||||
(instructionStringMakeEmpty, "instructionStringMakeEmpty"),
|
|
||||||
(instructionStringIsEmptyString, "instructionStringIsEmptyString"),
|
|
||||||
(instructionStringRemoveNth, "instructionStringRemoveNth"),
|
|
||||||
(instructionStringSetNth, "instructionStringSetNth"),
|
|
||||||
(instructionStringStripWhitespace, "instructionStringStripWhitespace"),
|
|
||||||
(instructionStringFromBool, "instructionStringFromBool"),
|
|
||||||
(instructionStringFromInt, "instructionStringFromInt"),
|
|
||||||
(instructionStringFromFloat, "instructionStringFromFloat"),
|
|
||||||
(instructionStringFromChar, "instructionStringFromChar"),
|
|
||||||
(instructionStringPop, "instructionStringPop"),
|
|
||||||
(instructionStringDup, "instructionStringDup"),
|
|
||||||
(instructionStringDupN, "instructionStringDupN"),
|
|
||||||
(instructionStringSwap, "instructionStringSwap"),
|
|
||||||
(instructionStringRot, "instructionStringRot"),
|
|
||||||
(instructionStringFlush, "instructionStringFlush"),
|
|
||||||
(instructionStringEq, "instructionStringEq"),
|
|
||||||
(instructionStringStackDepth, "instructionStringStackDepth"),
|
|
||||||
(instructionStringYank, "instructionStringYank"),
|
|
||||||
(instructionStringYankDup, "instructionStringYankDup"),
|
|
||||||
(instructionStringShove, "instructionStringShove"),
|
|
||||||
(instructionStringShoveDup, "instructionStringShoveDup"),
|
|
||||||
(instructionStringIsStackEmpty, "instructionStringIsStackEmpty"),
|
|
||||||
(instructionStringSort, "instructionStringSort"),
|
|
||||||
(instructionStringSortReverse, "instructionStringSortReverse"),
|
|
||||||
(instructionStringDupItems, "instructionStringDupItems"),
|
|
||||||
(instructionStringParseToChar, "instructionStringParseToChar"),
|
|
||||||
(instructionStringSubString, "instructionStringSubString")
|
|
||||||
]
|
|
||||||
|
|
||||||
allVectorIntInstructions :: [Gene]
|
|
||||||
allVectorIntInstructions =
|
|
||||||
map
|
|
||||||
StateFunc
|
|
||||||
[ (instructionVectorIntConcat, "instructionVectorIntConcat"),
|
|
||||||
(instructionVectorIntConj, "instructionVectorIntConj"),
|
|
||||||
(instructionVectorIntConjEnd, "instructionVectorIntConjEnd"),
|
|
||||||
(instructionVectorIntTakeN, "instructionVectorIntTakeN"),
|
|
||||||
(instructionVectorIntSubVector, "instructionVectorIntSubVector"),
|
|
||||||
(instructionVectorIntFirst, "instructionVectorIntFirst"),
|
|
||||||
(instructionVectorIntFromFirstPrim, "instructionVectorFirstFromPrim"),
|
|
||||||
(instructionVectorIntFromPrim, "instructionVectorFromPrim"),
|
|
||||||
(instructionVectorIntLast, "instructionVectorIntLast"),
|
|
||||||
(instructionVectorIntFromLastPrim, "instructionVectorIntFromLastPrim"),
|
|
||||||
(instructionVectorIntNth, "instructionVectorIntNth"),
|
|
||||||
(instructionVectorIntFromNthPrim, "instructionVectorIntFromNthPrim"),
|
|
||||||
(instructionVectorIntRest, "instructionVectorIntRest"),
|
|
||||||
(instructionVectorIntButLast, "instructionVectorIntButLast"),
|
|
||||||
(instructionVectorIntDrop, "instructionVectorIntDrop"),
|
|
||||||
(instructionVectorIntDropR, "instructionVectorIntDropR"),
|
|
||||||
(instructionVectorIntLength, "instructionVectorIntLength"),
|
|
||||||
(instructionVectorIntReverse, "instructionVectorIntReverse"),
|
|
||||||
(instructionVectorIntPushAll, "instructionVectorIntPushAll"),
|
|
||||||
(instructionVectorIntMakeEmpty, "instructionVectorIntMakeEmpty"),
|
|
||||||
(instructionVectorIntIsEmpty, "instructionVectorIntIsEmpty"),
|
|
||||||
(instructionVectorIntContains, "instructionVectorIntContains"),
|
|
||||||
(instructionVectorIntContainsVectorInt, "instructionVectorIntContainsVectorInt"),
|
|
||||||
(instructionVectorIntIndexOf, "instructionVectorIntIndexOf"),
|
|
||||||
(instructionVectorIntIndexOfVectorInt, "instructionVectorIntIndexOfVectorInt"),
|
|
||||||
(instructionVectorIntOccurrencesOf, "instructionVectorIntOccurrencesOf"),
|
|
||||||
(instructionVectorIntOccurrencesOfVectorInt, "instructionVectorIntOccurrencesOfVectorInt"),
|
|
||||||
(instructionVectorIntParseToInt, "instructionVectorIntParseToInt"),
|
|
||||||
(instructionVectorIntSetNth, "instructionVectorIntSetNth"),
|
|
||||||
(instructionVectorIntSplitOn, "instructionVectorIntSplitOn"),
|
|
||||||
(instructionVectorIntSplitOnVectorInt, "instructionVectorIntSplitOnVectorInt"),
|
|
||||||
(instructionVectorIntReplaceFirst, "instructionVectorIntReplaceFirst"),
|
|
||||||
(instructionVectorIntReplaceN, "instructionVectorIntReplaceN"),
|
|
||||||
(instructionVectorIntReplaceAll, "instructionVectorIntReplaceAll"),
|
|
||||||
(instructionVectorIntReplaceFirstVectorInt, "instructionVectorIntReplaceFirstVectorInt"),
|
|
||||||
(instructionVectorIntReplaceVectorIntN, "instructionVectorIntReplaceVectorIntN"),
|
|
||||||
(instructionVectorIntReplaceAllVectorInt, "instructionVectorIntReplaceAllVectorInt"),
|
|
||||||
(instructionVectorIntRemoveFirst, "instructionVectorIntRemoveFirst"),
|
|
||||||
(instructionVectorIntRemoveN, "instructionVectorIntRemoveN"),
|
|
||||||
(instructionVectorIntRemoveAll, "instructionVectorIntRemoveAll"),
|
|
||||||
(instructionVectorIntRemoveFirstVectorInt, "instructionVectorIntRemoveFirstVectorInt"),
|
|
||||||
(instructionVectorIntRemoveNVectorInt, "instructionVectorIntRemoveNVectorInt"),
|
|
||||||
(instructionVectorIntRemoveAllVectorInt, "instructionVectorIntRemoveAllVectorInt"),
|
|
||||||
(instructionVectorIntIterate, "instructionVectorIntIterate"),
|
|
||||||
(instructionVectorIntInsert, "instructionVectorIntInsert"),
|
|
||||||
(instructionVectorIntInsertVectorInt, "instructionVectorIntInsertVectorInt"),
|
|
||||||
(instructionVectorIntPop, "instructionVectorIntPop"),
|
|
||||||
(instructionVectorIntDup, "instructionVectorIntDup"),
|
|
||||||
(instructionVectorIntDupN, "instructionVectorIntDupN"),
|
|
||||||
(instructionVectorIntSwap, "instructionVectorIntSwap"),
|
|
||||||
(instructionVectorIntRot, "instructionVectorIntRot"),
|
|
||||||
(instructionVectorIntFlush, "instructionVectorIntFlush"),
|
|
||||||
(instructionVectorIntEq, "instructionVectorIntEq"),
|
|
||||||
(instructionVectorIntStackDepth, "instructionVectorIntStackDepth"),
|
|
||||||
(instructionVectorIntYank, "instructionVectorIntYank"),
|
|
||||||
(instructionVectorIntYankDup, "instructionVectorIntYankDup"),
|
|
||||||
(instructionVectorIntShove, "instructionVectorIntShove"),
|
|
||||||
(instructionVectorIntShoveDup, "instructionVectorIntShoveDup"),
|
|
||||||
(instructionVectorIntDupItems, "intsructionVectorIntDupItems"),
|
|
||||||
(instructionVectorIntIsStackEmpty, "instructionVectorIntIsStackEmpty"),
|
|
||||||
(instructionVectorIntSort, "instructionVectorIntSort"),
|
|
||||||
(instructionVectorIntSortReverse, "instructionVectorIntSortReverse"),
|
|
||||||
(instructionVectorIntDupItems, "instructionVectorIntDupItems")
|
|
||||||
]
|
|
||||||
|
|
||||||
allVectorFloatInstructions :: [Gene]
|
|
||||||
allVectorFloatInstructions =
|
|
||||||
map
|
|
||||||
StateFunc
|
|
||||||
[ (instructionVectorFloatConcat, "instructionVectorFloatConcat"),
|
|
||||||
(instructionVectorFloatConj, "instructionVectorFloatConj"),
|
|
||||||
(instructionVectorFloatConjEnd, "instructionVectorFloatConjEnd"),
|
|
||||||
(instructionVectorFloatTakeN, "instructionVectorFloatTakeN"),
|
|
||||||
(instructionVectorFloatSubVector, "instructionVectorFloatSubVector"),
|
|
||||||
(instructionVectorFloatFirst, "instructionVectorFloatFirst"),
|
|
||||||
(instructionVectorFloatFromFirstPrim, "instructionVectorFirstFromPrim"),
|
|
||||||
(instructionVectorFloatFromPrim, "instructionVectorFromPrim"),
|
|
||||||
(instructionVectorFloatLast, "instructionVectorFloatLast"),
|
|
||||||
(instructionVectorFloatFromLastPrim, "instructionVectorFloatFromLastPrim"),
|
|
||||||
(instructionVectorFloatNth, "instructionVectorFloatNth"),
|
|
||||||
(instructionVectorFloatFromNthPrim, "instructionVectorFloatFromNthPrim"),
|
|
||||||
(instructionVectorFloatRest, "instructionVectorFloatRest"),
|
|
||||||
(instructionVectorFloatButLast, "instructionVectorFloatButLast"),
|
|
||||||
(instructionVectorFloatDrop, "instructionVectorFloatDrop"),
|
|
||||||
(instructionVectorFloatDropR, "instructionVectorFloatDropR"),
|
|
||||||
(instructionVectorFloatLength, "instructionVectorFloatLength"),
|
|
||||||
(instructionVectorFloatReverse, "instructionVectorFloatReverse"),
|
|
||||||
(instructionVectorFloatPushAll, "instructionVectorFloatPushAll"),
|
|
||||||
(instructionVectorFloatMakeEmpty, "instructionVectorFloatMakeEmpty"),
|
|
||||||
(instructionVectorFloatIsEmpty, "instructionVectorFloatIsEmpty"),
|
|
||||||
(instructionVectorFloatContains, "instructionVectorFloatContains"),
|
|
||||||
(instructionVectorFloatContainsVectorFloat, "instructionVectorFloatContainsVectorFloat"),
|
|
||||||
(instructionVectorFloatIndexOf, "instructionVectorFloatIndexOf"),
|
|
||||||
(instructionVectorFloatIndexOfVectorFloat, "instructionVectorFloatIndexOfVectorFloat"),
|
|
||||||
(instructionVectorFloatOccurrencesOf, "instructionVectorFloatOccurrencesOf"),
|
|
||||||
(instructionVectorFloatOccurrencesOfVectorFloat, "instructionVectorFloatOccurrencesOfVectorFloat"),
|
|
||||||
(instructionVectorFloatParseToFloat, "instructionVectorFloatParseToFloat"),
|
|
||||||
(instructionVectorFloatSetNth, "instructionVectorFloatSetNth"),
|
|
||||||
(instructionVectorFloatSplitOn, "instructionVectorFloatSplitOn"),
|
|
||||||
(instructionVectorFloatSplitOnVectorFloat, "instructionVectorFloatSplitOnVectorFloat"),
|
|
||||||
(instructionVectorFloatReplaceFirst, "instructionVectorFloatReplaceFirst"),
|
|
||||||
(instructionVectorFloatReplaceN, "instructionVectorFloatReplaceN"),
|
|
||||||
(instructionVectorFloatReplaceAll, "instructionVectorFloatReplaceAll"),
|
|
||||||
(instructionVectorFloatReplaceFirstVectorFloat, "instructionVectorFloatReplaceFirstVectorFloat"),
|
|
||||||
(instructionVectorFloatReplaceVectorFloatN, "instructionVectorFloatReplaceVectorFloatN"),
|
|
||||||
(instructionVectorFloatReplaceAllVectorFloat, "instructionVectorFloatReplaceAllVectorFloat"),
|
|
||||||
(instructionVectorFloatRemoveFirst, "instructionVectorFloatRemoveFirst"),
|
|
||||||
(instructionVectorFloatRemoveN, "instructionVectorFloatRemoveN"),
|
|
||||||
(instructionVectorFloatRemoveAll, "instructionVectorFloatRemoveAll"),
|
|
||||||
(instructionVectorFloatRemoveFirstVectorFloat, "instructionVectorFloatRemoveFirstVectorFloat"),
|
|
||||||
(instructionVectorFloatRemoveNVectorFloat, "instructionVectorFloatRemoveNVectorFloat"),
|
|
||||||
(instructionVectorFloatRemoveAllVectorFloat, "instructionVectorFloatRemoveAllVectorFloat"),
|
|
||||||
(instructionVectorFloatIterate, "instructionVectorFloatIterate"),
|
|
||||||
(instructionVectorFloatInsert, "instructionVectorFloatInsert"),
|
|
||||||
(instructionVectorFloatInsertVectorFloat, "instructionVectorFloatInsertVectorFloat"),
|
|
||||||
(instructionVectorFloatPop, "instructionVectorFloatPop"),
|
|
||||||
(instructionVectorFloatDup, "instructionVectorFloatDup"),
|
|
||||||
(instructionVectorFloatDupN, "instructionVectorFloatDupN"),
|
|
||||||
(instructionVectorFloatSwap, "instructionVectorFloatSwap"),
|
|
||||||
(instructionVectorFloatRot, "instructionVectorFloatRot"),
|
|
||||||
(instructionVectorFloatFlush, "instructionVectorFloatFlush"),
|
|
||||||
(instructionVectorFloatEq, "instructionVectorFloatEq"),
|
|
||||||
(instructionVectorFloatStackDepth, "instructionVectorFloatStackDepth"),
|
|
||||||
(instructionVectorFloatYank, "instructionVectorFloatYank"),
|
|
||||||
(instructionVectorFloatYankDup, "instructionVectorFloatYankDup"),
|
|
||||||
(instructionVectorFloatShove, "instructionVectorFloatShove"),
|
|
||||||
(instructionVectorFloatShoveDup, "instructionVectorFloatShoveDup"),
|
|
||||||
(instructionVectorFloatDupItems, "intsructionVectorFloatDupItems"),
|
|
||||||
(instructionVectorFloatIsStackEmpty, "instructionVectorFloatIsStackEmpty"),
|
|
||||||
(instructionVectorFloatSort, "instructionVectorFloatSort"),
|
|
||||||
(instructionVectorFloatSortReverse, "instructionVectorFloatSortReverse"),
|
|
||||||
(instructionVectorFloatDupItems, "instructionVectorFloatDupItems")
|
|
||||||
]
|
|
||||||
|
|
||||||
allVectorCharInstructions :: [Gene]
|
|
||||||
allVectorCharInstructions =
|
|
||||||
map
|
|
||||||
StateFunc
|
|
||||||
[ (instructionVectorCharConcat, "instructionVectorCharConcat"),
|
|
||||||
(instructionVectorCharConj, "instructionVectorCharConj"),
|
|
||||||
(instructionVectorCharConjEnd, "instructionVectorCharConjEnd"),
|
|
||||||
(instructionVectorCharTakeN, "instructionVectorCharTakeN"),
|
|
||||||
(instructionVectorCharSubVector, "instructionVectorCharSubVector"),
|
|
||||||
(instructionVectorCharFirst, "instructionVectorCharFirst"),
|
|
||||||
(instructionVectorCharFromFirstPrim, "instructionVectorFirstFromPrim"),
|
|
||||||
(instructionVectorCharFromPrim, "instructionVectorFromPrim"),
|
|
||||||
(instructionVectorCharLast, "instructionVectorCharLast"),
|
|
||||||
(instructionVectorCharFromLastPrim, "instructionVectorCharFromLastPrim"),
|
|
||||||
(instructionVectorCharNth, "instructionVectorCharNth"),
|
|
||||||
(instructionVectorCharFromNthPrim, "instructionVectorCharFromNthPrim"),
|
|
||||||
(instructionVectorCharRest, "instructionVectorCharRest"),
|
|
||||||
(instructionVectorCharButLast, "instructionVectorCharButLast"),
|
|
||||||
(instructionVectorCharDrop, "instructionVectorCharDrop"),
|
|
||||||
(instructionVectorCharDropR, "instructionVectorCharDropR"),
|
|
||||||
(instructionVectorCharLength, "instructionVectorCharLength"),
|
|
||||||
(instructionVectorCharReverse, "instructionVectorCharReverse"),
|
|
||||||
(instructionVectorCharPushAll, "instructionVectorCharPushAll"),
|
|
||||||
(instructionVectorCharMakeEmpty, "instructionVectorCharMakeEmpty"),
|
|
||||||
(instructionVectorCharIsEmpty, "instructionVectorCharIsEmpty"),
|
|
||||||
(instructionVectorCharContains, "instructionVectorCharContains"),
|
|
||||||
(instructionVectorCharContainsVectorChar, "instructionVectorCharContainsVectorChar"),
|
|
||||||
(instructionVectorCharIndexOf, "instructionVectorCharIndexOf"),
|
|
||||||
(instructionVectorCharIndexOfVectorChar, "instructionVectorCharIndexOfVectorChar"),
|
|
||||||
(instructionVectorCharOccurrencesOf, "instructionVectorCharOccurrencesOf"),
|
|
||||||
(instructionVectorCharOccurrencesOfVectorChar, "instructionVectorCharOccurrencesOfVectorChar"),
|
|
||||||
(instructionVectorCharParseToChar, "instructionVectorCharParseToChar"),
|
|
||||||
(instructionVectorCharSetNth, "instructionVectorCharSetNth"),
|
|
||||||
(instructionVectorCharSplitOn, "instructionVectorCharSplitOn"),
|
|
||||||
(instructionVectorCharSplitOnVectorChar, "instructionVectorCharSplitOnVectorChar"),
|
|
||||||
(instructionVectorCharReplaceFirst, "instructionVectorCharReplaceFirst"),
|
|
||||||
(instructionVectorCharReplaceN, "instructionVectorCharReplaceN"),
|
|
||||||
(instructionVectorCharReplaceAll, "instructionVectorCharReplaceAll"),
|
|
||||||
(instructionVectorCharReplaceFirstVectorChar, "instructionVectorCharReplaceFirstVectorChar"),
|
|
||||||
(instructionVectorCharReplaceVectorCharN, "instructionVectorCharReplaceVectorCharN"),
|
|
||||||
(instructionVectorCharReplaceAllVectorChar, "instructionVectorCharReplaceAllVectorChar"),
|
|
||||||
(instructionVectorCharRemoveFirst, "instructionVectorCharRemoveFirst"),
|
|
||||||
(instructionVectorCharRemoveN, "instructionVectorCharRemoveN"),
|
|
||||||
(instructionVectorCharRemoveAll, "instructionVectorCharRemoveAll"),
|
|
||||||
(instructionVectorCharRemoveFirstVectorChar, "instructionVectorCharRemoveFirstVectorChar"),
|
|
||||||
(instructionVectorCharRemoveNVectorChar, "instructionVectorCharRemoveNVectorChar"),
|
|
||||||
(instructionVectorCharRemoveAllVectorChar, "instructionVectorCharRemoveAllVectorChar"),
|
|
||||||
(instructionVectorCharIterate, "instructionVectorCharIterate"),
|
|
||||||
(instructionVectorCharInsert, "instructionVectorCharInsert"),
|
|
||||||
(instructionVectorCharInsertVectorChar, "instructionVectorCharInsertVectorChar"),
|
|
||||||
(instructionVectorCharPop, "instructionVectorCharPop"),
|
|
||||||
(instructionVectorCharDup, "instructionVectorCharDup"),
|
|
||||||
(instructionVectorCharDupN, "instructionVectorCharDupN"),
|
|
||||||
(instructionVectorCharSwap, "instructionVectorCharSwap"),
|
|
||||||
(instructionVectorCharRot, "instructionVectorCharRot"),
|
|
||||||
(instructionVectorCharFlush, "instructionVectorCharFlush"),
|
|
||||||
(instructionVectorCharEq, "instructionVectorCharEq"),
|
|
||||||
(instructionVectorCharStackDepth, "instructionVectorCharStackDepth"),
|
|
||||||
(instructionVectorCharYank, "instructionVectorCharYank"),
|
|
||||||
(instructionVectorCharYankDup, "instructionVectorCharYankDup"),
|
|
||||||
(instructionVectorCharShove, "instructionVectorCharShove"),
|
|
||||||
(instructionVectorCharShoveDup, "instructionVectorCharShoveDup"),
|
|
||||||
(instructionVectorCharDupItems, "intsructionVectorCharDupItems"),
|
|
||||||
(instructionVectorCharIsStackEmpty, "instructionVectorCharIsStackEmpty"),
|
|
||||||
(instructionVectorCharSort, "instructionVectorCharSort"),
|
|
||||||
(instructionVectorCharSortReverse, "instructionVectorCharSortReverse"),
|
|
||||||
(instructionVectorCharDupItems, "instructionVectorCharDupItems")
|
|
||||||
]
|
|
||||||
|
|
||||||
allVectorStringInstructions :: [Gene]
|
|
||||||
allVectorStringInstructions =
|
|
||||||
map
|
|
||||||
StateFunc
|
|
||||||
[ (instructionVectorStringConcat, "instructionVectorStringConcat"),
|
|
||||||
(instructionVectorStringConj, "instructionVectorStringConj"),
|
|
||||||
(instructionVectorStringConjEnd, "instructionVectorStringConjEnd"),
|
|
||||||
(instructionVectorStringTakeN, "instructionVectorStringTakeN"),
|
|
||||||
(instructionVectorStringSubVector, "instructionVectorStringSubVector"),
|
|
||||||
(instructionVectorStringFirst, "instructionVectorStringFirst"),
|
|
||||||
(instructionVectorStringFromFirstPrim, "instructionVectorFirstFromPrim"),
|
|
||||||
(instructionVectorStringFromPrim, "instructionVectorFromPrim"),
|
|
||||||
(instructionVectorStringLast, "instructionVectorStringLast"),
|
|
||||||
(instructionVectorStringFromLastPrim, "instructionVectorStringFromLastPrim"),
|
|
||||||
(instructionVectorStringNth, "instructionVectorStringNth"),
|
|
||||||
(instructionVectorStringFromNthPrim, "instructionVectorStringFromNthPrim"),
|
|
||||||
(instructionVectorStringRest, "instructionVectorStringRest"),
|
|
||||||
(instructionVectorStringButLast, "instructionVectorStringButLast"),
|
|
||||||
(instructionVectorStringDrop, "instructionVectorStringDrop"),
|
|
||||||
(instructionVectorStringDropR, "instructionVectorStringDropR"),
|
|
||||||
(instructionVectorStringLength, "instructionVectorStringLength"),
|
|
||||||
(instructionVectorStringReverse, "instructionVectorStringReverse"),
|
|
||||||
(instructionVectorStringPushAll, "instructionVectorStringPushAll"),
|
|
||||||
(instructionVectorStringMakeEmpty, "instructionVectorStringMakeEmpty"),
|
|
||||||
(instructionVectorStringIsEmpty, "instructionVectorStringIsEmpty"),
|
|
||||||
(instructionVectorStringContains, "instructionVectorStringContains"),
|
|
||||||
(instructionVectorStringContainsVectorString, "instructionVectorStringContainsVectorString"),
|
|
||||||
(instructionVectorStringIndexOf, "instructionVectorStringIndexOf"),
|
|
||||||
(instructionVectorStringIndexOfVectorString, "instructionVectorStringIndexOfVectorString"),
|
|
||||||
(instructionVectorStringOccurrencesOf, "instructionVectorStringOccurrencesOf"),
|
|
||||||
(instructionVectorStringOccurrencesOfVectorString, "instructionVectorStringOccurrencesOfVectorString"),
|
|
||||||
(instructionVectorStringParseToString, "instructionVectorStringParseToString"),
|
|
||||||
(instructionVectorStringSetNth, "instructionVectorStringSetNth"),
|
|
||||||
(instructionVectorStringSplitOn, "instructionVectorStringSplitOn"),
|
|
||||||
(instructionVectorStringSplitOnVectorString, "instructionVectorStringSplitOnVectorString"),
|
|
||||||
(instructionVectorStringReplaceFirst, "instructionVectorStringReplaceFirst"),
|
|
||||||
(instructionVectorStringReplaceN, "instructionVectorStringReplaceN"),
|
|
||||||
(instructionVectorStringReplaceAll, "instructionVectorStringReplaceAll"),
|
|
||||||
(instructionVectorStringReplaceFirstVectorString, "instructionVectorStringReplaceFirstVectorString"),
|
|
||||||
(instructionVectorStringReplaceVectorStringN, "instructionVectorStringReplaceVectorStringN"),
|
|
||||||
(instructionVectorStringReplaceAllVectorString, "instructionVectorStringReplaceAllVectorString"),
|
|
||||||
(instructionVectorStringRemoveFirst, "instructionVectorStringRemoveFirst"),
|
|
||||||
(instructionVectorStringRemoveN, "instructionVectorStringRemoveN"),
|
|
||||||
(instructionVectorStringRemoveAll, "instructionVectorStringRemoveAll"),
|
|
||||||
(instructionVectorStringRemoveFirstVectorString, "instructionVectorStringRemoveFirstVectorString"),
|
|
||||||
(instructionVectorStringRemoveNVectorString, "instructionVectorStringRemoveNVectorString"),
|
|
||||||
(instructionVectorStringRemoveAllVectorString, "instructionVectorStringRemoveAllVectorString"),
|
|
||||||
(instructionVectorStringIterate, "instructionVectorStringIterate"),
|
|
||||||
(instructionVectorStringInsert, "instructionVectorStringInsert"),
|
|
||||||
(instructionVectorStringInsertVectorString, "instructionVectorStringInsertVectorString"),
|
|
||||||
(instructionVectorStringPop, "instructionVectorStringPop"),
|
|
||||||
(instructionVectorStringDup, "instructionVectorStringDup"),
|
|
||||||
(instructionVectorStringDupN, "instructionVectorStringDupN"),
|
|
||||||
(instructionVectorStringSwap, "instructionVectorStringSwap"),
|
|
||||||
(instructionVectorStringRot, "instructionVectorStringRot"),
|
|
||||||
(instructionVectorStringFlush, "instructionVectorStringFlush"),
|
|
||||||
(instructionVectorStringEq, "instructionVectorStringEq"),
|
|
||||||
(instructionVectorStringStackDepth, "instructionVectorStringStackDepth"),
|
|
||||||
(instructionVectorStringYank, "instructionVectorStringYank"),
|
|
||||||
(instructionVectorStringYankDup, "instructionVectorStringYankDup"),
|
|
||||||
(instructionVectorStringShove, "instructionVectorStringShove"),
|
|
||||||
(instructionVectorStringShoveDup, "instructionVectorStringShoveDup"),
|
|
||||||
(instructionVectorStringDupItems, "intsructionVectorStringDupItems"),
|
|
||||||
(instructionVectorStringIsStackEmpty, "instructionVectorStringIsStackEmpty"),
|
|
||||||
(instructionVectorStringSort, "instructionVectorStringSort"),
|
|
||||||
(instructionVectorStringSortReverse, "instructionVectorStringSortReverse"),
|
|
||||||
(instructionVectorStringDupItems, "instructionVectorStringDupItems")
|
|
||||||
]
|
|
||||||
|
|
||||||
allVectorBoolInstructions :: [Gene]
|
|
||||||
allVectorBoolInstructions =
|
|
||||||
map
|
|
||||||
StateFunc
|
|
||||||
[ (instructionVectorBoolConcat, "instructionVectorBoolConcat"),
|
|
||||||
(instructionVectorBoolConj, "instructionVectorBoolConj"),
|
|
||||||
(instructionVectorBoolConjEnd, "instructionVectorBoolConjEnd"),
|
|
||||||
(instructionVectorBoolTakeN, "instructionVectorBoolTakeN"),
|
|
||||||
(instructionVectorBoolSubVector, "instructionVectorBoolSubVector"),
|
|
||||||
(instructionVectorBoolFirst, "instructionVectorBoolFirst"),
|
|
||||||
(instructionVectorBoolFromFirstPrim, "instructionVectorFirstFromPrim"),
|
|
||||||
(instructionVectorBoolFromPrim, "instructionVectorFromPrim"),
|
|
||||||
(instructionVectorBoolLast, "instructionVectorBoolLast"),
|
|
||||||
(instructionVectorBoolFromLastPrim, "instructionVectorBoolFromLastPrim"),
|
|
||||||
(instructionVectorBoolNth, "instructionVectorBoolNth"),
|
|
||||||
(instructionVectorBoolFromNthPrim, "instructionVectorBoolFromNthPrim"),
|
|
||||||
(instructionVectorBoolRest, "instructionVectorBoolRest"),
|
|
||||||
(instructionVectorBoolButLast, "instructionVectorBoolButLast"),
|
|
||||||
(instructionVectorBoolDrop, "instructionVectorBoolDrop"),
|
|
||||||
(instructionVectorBoolDropR, "instructionVectorBoolDropR"),
|
|
||||||
(instructionVectorBoolLength, "instructionVectorBoolLength"),
|
|
||||||
(instructionVectorBoolReverse, "instructionVectorBoolReverse"),
|
|
||||||
(instructionVectorBoolPushAll, "instructionVectorBoolPushAll"),
|
|
||||||
(instructionVectorBoolMakeEmpty, "instructionVectorBoolMakeEmpty"),
|
|
||||||
(instructionVectorBoolIsEmpty, "instructionVectorBoolIsEmpty"),
|
|
||||||
(instructionVectorBoolContains, "instructionVectorBoolContains"),
|
|
||||||
(instructionVectorBoolContainsVectorBool, "instructionVectorBoolContainsVectorBool"),
|
|
||||||
(instructionVectorBoolIndexOf, "instructionVectorBoolIndexOf"),
|
|
||||||
(instructionVectorBoolIndexOfVectorBool, "instructionVectorBoolIndexOfVectorBool"),
|
|
||||||
(instructionVectorBoolOccurrencesOf, "instructionVectorBoolOccurrencesOf"),
|
|
||||||
(instructionVectorBoolOccurrencesOfVectorBool, "instructionVectorBoolOccurrencesOfVectorBool"),
|
|
||||||
(instructionVectorBoolParseToBool, "instructionVectorBoolParseToBool"),
|
|
||||||
(instructionVectorBoolSetNth, "instructionVectorBoolSetNth"),
|
|
||||||
(instructionVectorBoolSplitOn, "instructionVectorBoolSplitOn"),
|
|
||||||
(instructionVectorBoolSplitOnVectorBool, "instructionVectorBoolSplitOnVectorBool"),
|
|
||||||
(instructionVectorBoolReplaceFirst, "instructionVectorBoolReplaceFirst"),
|
|
||||||
(instructionVectorBoolReplaceN, "instructionVectorBoolReplaceN"),
|
|
||||||
(instructionVectorBoolReplaceAll, "instructionVectorBoolReplaceAll"),
|
|
||||||
(instructionVectorBoolReplaceFirstVectorBool, "instructionVectorBoolReplaceFirstVectorBool"),
|
|
||||||
(instructionVectorBoolReplaceVectorBoolN, "instructionVectorBoolReplaceVectorBoolN"),
|
|
||||||
(instructionVectorBoolReplaceAllVectorBool, "instructionVectorBoolReplaceAllVectorBool"),
|
|
||||||
(instructionVectorBoolRemoveFirst, "instructionVectorBoolRemoveFirst"),
|
|
||||||
(instructionVectorBoolRemoveN, "instructionVectorBoolRemoveN"),
|
|
||||||
(instructionVectorBoolRemoveAll, "instructionVectorBoolRemoveAll"),
|
|
||||||
(instructionVectorBoolRemoveFirstVectorBool, "instructionVectorBoolRemoveFirstVectorBool"),
|
|
||||||
(instructionVectorBoolRemoveNVectorBool, "instructionVectorBoolRemoveNVectorBool"),
|
|
||||||
(instructionVectorBoolRemoveAllVectorBool, "instructionVectorBoolRemoveAllVectorBool"),
|
|
||||||
(instructionVectorBoolIterate, "instructionVectorBoolIterate"),
|
|
||||||
(instructionVectorBoolInsert, "instructionVectorBoolInsert"),
|
|
||||||
(instructionVectorBoolInsertVectorBool, "instructionVectorBoolInsertVectorBool"),
|
|
||||||
(instructionVectorBoolPop, "instructionVectorBoolPop"),
|
|
||||||
(instructionVectorBoolDup, "instructionVectorBoolDup"),
|
|
||||||
(instructionVectorBoolDupN, "instructionVectorBoolDupN"),
|
|
||||||
(instructionVectorBoolSwap, "instructionVectorBoolSwap"),
|
|
||||||
(instructionVectorBoolRot, "instructionVectorBoolRot"),
|
|
||||||
(instructionVectorBoolFlush, "instructionVectorBoolFlush"),
|
|
||||||
(instructionVectorBoolEq, "instructionVectorBoolEq"),
|
|
||||||
(instructionVectorBoolStackDepth, "instructionVectorBoolStackDepth"),
|
|
||||||
(instructionVectorBoolYank, "instructionVectorBoolYank"),
|
|
||||||
(instructionVectorBoolYankDup, "instructionVectorBoolYankDup"),
|
|
||||||
(instructionVectorBoolShove, "instructionVectorBoolShove"),
|
|
||||||
(instructionVectorBoolShoveDup, "instructionVectorBoolShoveDup"),
|
|
||||||
(instructionVectorBoolDupItems, "intsructionVectorBoolDupItems"),
|
|
||||||
(instructionVectorBoolIsStackEmpty, "instructionVectorBoolIsStackEmpty"),
|
|
||||||
(instructionVectorBoolSort, "instructionVectorBoolSort"),
|
|
||||||
(instructionVectorBoolSortReverse, "instructionVectorBoolSortReverse"),
|
|
||||||
(instructionVectorBoolDupItems, "instructionVectorBoolDupItems")
|
|
||||||
]
|
|
||||||
|
|
||||||
allInstructions :: [Gene]
|
allInstructions :: [Gene]
|
||||||
allInstructions =
|
allInstructions =
|
||||||
allIntInstructions
|
allIntInstructions
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
module HushGP.Instructions.BoolInstructions where
|
module HushGP.Instructions.BoolInstructions where
|
||||||
|
|
||||||
import HushGP.State
|
import HushGP.State
|
||||||
import HushGP.Instructions.GenericInstructions
|
import HushGP.Instructions.GenericInstructions
|
||||||
import HushGP.Instructions.Utility
|
import HushGP.Instructions.Utility
|
||||||
|
import HushGP.TH
|
||||||
|
|
||||||
-- |If top of int stack /= 0 pushes True to bool stack, else false.
|
-- |If top of int stack /= 0 pushes True to bool stack, else false.
|
||||||
instructionBoolFromInt :: State -> State
|
instructionBoolFromInt :: State -> State
|
||||||
@ -94,3 +96,6 @@ instructionBoolIsStackEmpty = instructionIsStackEmpty bool
|
|||||||
-- |Duplicate the top N items from the bool stack based on the top int from the int stack.
|
-- |Duplicate the top N items from the bool stack based on the top int from the int stack.
|
||||||
instructionBoolDupItems :: State -> State
|
instructionBoolDupItems :: State -> State
|
||||||
instructionBoolDupItems = instructionDupItems bool
|
instructionBoolDupItems = instructionDupItems bool
|
||||||
|
|
||||||
|
allBoolInstructions :: [Gene]
|
||||||
|
allBoolInstructions = map StateFunc ($(functionExtractor "instruction"))
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
module HushGP.Instructions.CharInstructions where
|
module HushGP.Instructions.CharInstructions where
|
||||||
|
|
||||||
import Data.Char
|
import Data.Char
|
||||||
import HushGP.State
|
import HushGP.State
|
||||||
import HushGP.Instructions.GenericInstructions
|
import HushGP.Instructions.GenericInstructions
|
||||||
import HushGP.Instructions.Utility
|
import HushGP.Instructions.Utility
|
||||||
|
import HushGP.TH
|
||||||
|
|
||||||
-- |Combines the top two chars into a string and pushes the result to the string stack.
|
-- |Combines the top two chars into a string and pushes the result to the string stack.
|
||||||
instructionCharConcat :: State -> State
|
instructionCharConcat :: State -> State
|
||||||
@ -132,3 +134,6 @@ instructionCharDupItems = instructionDupItems char
|
|||||||
-- all chars in said string to the char stack.
|
-- all chars in said string to the char stack.
|
||||||
instructionCharFromAllString :: State -> State
|
instructionCharFromAllString :: State -> State
|
||||||
instructionCharFromAllString = instructionPushAll char string
|
instructionCharFromAllString = instructionPushAll char string
|
||||||
|
|
||||||
|
allCharInstructions :: [Gene]
|
||||||
|
allCharInstructions = map StateFunc ($(functionExtractor "instruction"))
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
module HushGP.Instructions.CodeInstructions where
|
module HushGP.Instructions.CodeInstructions where
|
||||||
|
|
||||||
import Data.List (elemIndex)
|
import Data.List (elemIndex)
|
||||||
@ -5,6 +6,7 @@ import HushGP.State
|
|||||||
import HushGP.Instructions.GenericInstructions
|
import HushGP.Instructions.GenericInstructions
|
||||||
import HushGP.Instructions.IntInstructions
|
import HushGP.Instructions.IntInstructions
|
||||||
import HushGP.Instructions.Utility
|
import HushGP.Instructions.Utility
|
||||||
|
import HushGP.TH
|
||||||
-- import Debug.Trace
|
-- import Debug.Trace
|
||||||
|
|
||||||
-- |Pops the top of the code stack
|
-- |Pops the top of the code stack
|
||||||
@ -345,3 +347,6 @@ instructionCodeNoOp state = state
|
|||||||
-- |Duplicates the top N items of the code stack based on the top of the int stack.
|
-- |Duplicates the top N items of the code stack based on the top of the int stack.
|
||||||
instructionCodeDupItems :: State -> State
|
instructionCodeDupItems :: State -> State
|
||||||
instructionCodeDupItems = instructionDupItems code
|
instructionCodeDupItems = instructionDupItems code
|
||||||
|
|
||||||
|
allCodeInstructions :: [Gene]
|
||||||
|
allCodeInstructions = map StateFunc ($(functionExtractor "instruction"))
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
module HushGP.Instructions.ExecInstructions where
|
module HushGP.Instructions.ExecInstructions where
|
||||||
|
|
||||||
import HushGP.State
|
import HushGP.State
|
||||||
import HushGP.Instructions.IntInstructions
|
import HushGP.Instructions.IntInstructions
|
||||||
import HushGP.Instructions.GenericInstructions
|
import HushGP.Instructions.GenericInstructions
|
||||||
|
import HushGP.TH
|
||||||
|
|
||||||
-- |Removes the second item from the exec stack if the top of the bool stack is True.
|
-- |Removes the second item from the exec stack if the top of the bool stack is True.
|
||||||
-- Removes the first item from the exec stack if the top of the bool stack is False.
|
-- Removes the first item from the exec stack if the top of the bool stack is False.
|
||||||
@ -153,3 +155,6 @@ instructionExecY state = state
|
|||||||
-- |Duplicates the top N items of the exec stack based on the top of the int stack.
|
-- |Duplicates the top N items of the exec stack based on the top of the int stack.
|
||||||
instructionExecDupItems :: State -> State
|
instructionExecDupItems :: State -> State
|
||||||
instructionExecDupItems = instructionDupItems exec
|
instructionExecDupItems = instructionDupItems exec
|
||||||
|
|
||||||
|
allExecInstructions :: [Gene]
|
||||||
|
allExecInstructions = map StateFunc ($(functionExtractor "instruction"))
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
module HushGP.Instructions.FloatInstructions where
|
module HushGP.Instructions.FloatInstructions where
|
||||||
|
|
||||||
import Data.Fixed (mod')
|
import Data.Fixed (mod')
|
||||||
@ -5,6 +6,7 @@ import HushGP.Instructions.GenericInstructions
|
|||||||
import HushGP.Instructions.Utility
|
import HushGP.Instructions.Utility
|
||||||
import HushGP.State
|
import HushGP.State
|
||||||
import Data.Char
|
import Data.Char
|
||||||
|
import HushGP.TH
|
||||||
|
|
||||||
-- |Converts the top int to a float and pushes the result to the float stack.
|
-- |Converts the top int to a float and pushes the result to the float stack.
|
||||||
instructionFloatFromInt :: State -> State
|
instructionFloatFromInt :: State -> State
|
||||||
@ -169,3 +171,6 @@ instructionFloatTan state = state
|
|||||||
-- |Duplicate the top N items from the float stack based on the top int from the int stack.
|
-- |Duplicate the top N items from the float stack based on the top int from the int stack.
|
||||||
instructionFloatDupItems :: State -> State
|
instructionFloatDupItems :: State -> State
|
||||||
instructionFloatDupItems = instructionDupItems float
|
instructionFloatDupItems = instructionDupItems float
|
||||||
|
|
||||||
|
allFloatInstructions :: [Gene]
|
||||||
|
allFloatInstructions = map StateFunc ($(functionExtractor "instruction"))
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
module HushGP.Instructions.IntInstructions where
|
module HushGP.Instructions.IntInstructions where
|
||||||
|
|
||||||
import HushGP.State
|
import HushGP.State
|
||||||
import HushGP.Instructions.GenericInstructions
|
import HushGP.Instructions.GenericInstructions
|
||||||
import Data.Char
|
import Data.Char
|
||||||
-- import Debug.Trace
|
import HushGP.TH
|
||||||
|
|
||||||
-- |Converts the top float to an int and pushes the result to the int stack.
|
-- |Converts the top float to an int and pushes the result to the int stack.
|
||||||
instructionIntFromFloat :: State -> State
|
instructionIntFromFloat :: State -> State
|
||||||
@ -155,3 +156,6 @@ instructionIntIsStackEmpty = instructionIsStackEmpty int
|
|||||||
-- |Duplicate the top N items from the int stack based on the top int from the int stack.
|
-- |Duplicate the top N items from the int stack based on the top int from the int stack.
|
||||||
instructionIntDupItems :: State -> State
|
instructionIntDupItems :: State -> State
|
||||||
instructionIntDupItems = instructionDupItems int
|
instructionIntDupItems = instructionDupItems int
|
||||||
|
|
||||||
|
allIntInstructions :: [Gene]
|
||||||
|
allIntInstructions = map StateFunc ($(functionExtractor "instruction"))
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
module HushGP.Instructions.StringInstructions where
|
module HushGP.Instructions.StringInstructions where
|
||||||
|
|
||||||
import HushGP.State
|
import HushGP.State
|
||||||
import HushGP.Instructions.GenericInstructions
|
import HushGP.Instructions.GenericInstructions
|
||||||
import HushGP.Instructions.Utility
|
import HushGP.Instructions.Utility
|
||||||
|
import HushGP.TH
|
||||||
|
|
||||||
-- |Concats the top two strings on the string stack and pushes the result.
|
-- |Concats the top two strings on the string stack and pushes the result.
|
||||||
instructionStringConcat :: State -> State
|
instructionStringConcat :: State -> State
|
||||||
@ -323,3 +325,6 @@ instructionStringSubString = instructionSubVector string
|
|||||||
-- exec stack along the way.
|
-- exec stack along the way.
|
||||||
instructionStringIterate :: State -> State
|
instructionStringIterate :: State -> State
|
||||||
instructionStringIterate = instructionVectorIterate char string GeneString instructionStringIterate "instructionStringIterate"
|
instructionStringIterate = instructionVectorIterate char string GeneString instructionStringIterate "instructionStringIterate"
|
||||||
|
|
||||||
|
allStringInstructions :: [Gene]
|
||||||
|
allStringInstructions = map StateFunc ($(functionExtractor "instruction"))
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
module HushGP.Instructions.VectorBoolInstructions where
|
module HushGP.Instructions.VectorBoolInstructions where
|
||||||
|
|
||||||
import HushGP.State
|
import HushGP.State
|
||||||
import HushGP.Instructions.GenericInstructions
|
import HushGP.Instructions.GenericInstructions
|
||||||
|
import HushGP.TH
|
||||||
|
|
||||||
-- |Pops the top bool vector from the bool vector stack.
|
-- |Pops the top bool vector from the bool vector stack.
|
||||||
instructionVectorBoolPop :: State -> State
|
instructionVectorBoolPop :: State -> State
|
||||||
@ -328,3 +330,6 @@ instructionVectorBoolInsert = instructionVectorInsert bool vectorBool
|
|||||||
-- pulled from the top of the int stack.
|
-- pulled from the top of the int stack.
|
||||||
instructionVectorBoolInsertVectorBool :: State -> State
|
instructionVectorBoolInsertVectorBool :: State -> State
|
||||||
instructionVectorBoolInsertVectorBool = instructionVectorInsertVector vectorBool
|
instructionVectorBoolInsertVectorBool = instructionVectorInsertVector vectorBool
|
||||||
|
|
||||||
|
allVectorBoolInstructions :: [Gene]
|
||||||
|
allVectorBoolInstructions = map StateFunc ($(functionExtractor "instruction"))
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
module HushGP.Instructions.VectorCharInstructions where
|
module HushGP.Instructions.VectorCharInstructions where
|
||||||
|
|
||||||
import HushGP.State
|
import HushGP.State
|
||||||
import HushGP.Instructions.GenericInstructions
|
import HushGP.Instructions.GenericInstructions
|
||||||
|
import HushGP.TH
|
||||||
|
|
||||||
-- |Pops the top char vector from the char vector stack.
|
-- |Pops the top char vector from the char vector stack.
|
||||||
instructionVectorCharPop :: State -> State
|
instructionVectorCharPop :: State -> State
|
||||||
@ -328,3 +330,6 @@ instructionVectorCharInsert = instructionVectorInsert char vectorChar
|
|||||||
-- pulled from the top of the int stack.
|
-- pulled from the top of the int stack.
|
||||||
instructionVectorCharInsertVectorChar :: State -> State
|
instructionVectorCharInsertVectorChar :: State -> State
|
||||||
instructionVectorCharInsertVectorChar = instructionVectorInsertVector vectorChar
|
instructionVectorCharInsertVectorChar = instructionVectorInsertVector vectorChar
|
||||||
|
|
||||||
|
allVectorCharInstructions :: [Gene]
|
||||||
|
allVectorCharInstructions = map StateFunc ($(functionExtractor "instruction"))
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
module HushGP.Instructions.VectorFloatInstructions where
|
module HushGP.Instructions.VectorFloatInstructions where
|
||||||
|
|
||||||
import HushGP.State
|
import HushGP.State
|
||||||
import HushGP.Instructions.GenericInstructions
|
import HushGP.Instructions.GenericInstructions
|
||||||
|
import HushGP.TH
|
||||||
|
|
||||||
-- |Pops the top float vector from the float vector stack.
|
-- |Pops the top float vector from the float vector stack.
|
||||||
instructionVectorFloatPop :: State -> State
|
instructionVectorFloatPop :: State -> State
|
||||||
@ -328,3 +330,6 @@ instructionVectorFloatInsert = instructionVectorInsert float vectorFloat
|
|||||||
-- pulled from the top of the int stack.
|
-- pulled from the top of the int stack.
|
||||||
instructionVectorFloatInsertVectorFloat :: State -> State
|
instructionVectorFloatInsertVectorFloat :: State -> State
|
||||||
instructionVectorFloatInsertVectorFloat = instructionVectorInsertVector vectorFloat
|
instructionVectorFloatInsertVectorFloat = instructionVectorInsertVector vectorFloat
|
||||||
|
|
||||||
|
allVectorFloatInstructions :: [Gene]
|
||||||
|
allVectorFloatInstructions = map StateFunc ($(functionExtractor "instruction"))
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
module HushGP.Instructions.VectorIntInstructions where
|
module HushGP.Instructions.VectorIntInstructions where
|
||||||
|
|
||||||
import HushGP.Instructions.GenericInstructions
|
import HushGP.Instructions.GenericInstructions
|
||||||
import HushGP.State
|
import HushGP.State
|
||||||
|
import HushGP.TH
|
||||||
|
|
||||||
-- |Pops the top int vector from the int vector stack.
|
-- |Pops the top int vector from the int vector stack.
|
||||||
instructionVectorIntPop :: State -> State
|
instructionVectorIntPop :: State -> State
|
||||||
@ -328,3 +330,6 @@ instructionVectorIntInsert = instructionVectorInsert int vectorInt
|
|||||||
-- pulled from the top of the int stack.
|
-- pulled from the top of the int stack.
|
||||||
instructionVectorIntInsertVectorInt :: State -> State
|
instructionVectorIntInsertVectorInt :: State -> State
|
||||||
instructionVectorIntInsertVectorInt = instructionVectorInsertVector vectorInt
|
instructionVectorIntInsertVectorInt = instructionVectorInsertVector vectorInt
|
||||||
|
|
||||||
|
allVectorIntInstructions :: [Gene]
|
||||||
|
allVectorIntInstructions = map StateFunc ($(functionExtractor "instruction"))
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
module HushGP.Instructions.VectorStringInstructions where
|
module HushGP.Instructions.VectorStringInstructions where
|
||||||
|
|
||||||
import HushGP.State
|
import HushGP.State
|
||||||
import HushGP.Instructions.GenericInstructions
|
import HushGP.Instructions.GenericInstructions
|
||||||
|
import HushGP.TH
|
||||||
|
|
||||||
-- |Pops the top string vector from the string vector stack.
|
-- |Pops the top string vector from the string vector stack.
|
||||||
instructionVectorStringPop :: State -> State
|
instructionVectorStringPop :: State -> State
|
||||||
@ -328,3 +330,6 @@ instructionVectorStringInsert = instructionVectorInsert string vectorString
|
|||||||
-- pulled from the top of the int stack.
|
-- pulled from the top of the int stack.
|
||||||
instructionVectorStringInsertVectorString :: State -> State
|
instructionVectorStringInsertVectorString :: State -> State
|
||||||
instructionVectorStringInsertVectorString = instructionVectorInsertVector vectorString
|
instructionVectorStringInsertVectorString = instructionVectorInsertVector vectorString
|
||||||
|
|
||||||
|
allVectorStringInstructions :: [Gene]
|
||||||
|
allVectorStringInstructions = map StateFunc ($(functionExtractor "instruction"))
|
||||||
|
@ -26,8 +26,8 @@ prop_IntMod state = aaa1Test int instructionIntMod mod state
|
|||||||
prop_IntFromFloat :: State -> Property
|
prop_IntFromFloat :: State -> Property
|
||||||
prop_IntFromFloat = ab1Test float int instructionIntFromFloat floor
|
prop_IntFromFloat = ab1Test float int instructionIntFromFloat floor
|
||||||
|
|
||||||
prop_IntFromProperty :: State -> Property
|
prop_IntFromBool :: State -> Property
|
||||||
prop_IntFromProperty = ab1Test bool int instructionIntFromBool (\x -> if x then 1 else 0)
|
prop_IntFromBool = ab1Test bool int instructionIntFromBool (\x -> if x then 1 else 0)
|
||||||
|
|
||||||
prop_IntMin :: State -> Property
|
prop_IntMin :: State -> Property
|
||||||
prop_IntMin = aaa1Test int instructionIntMin min
|
prop_IntMin = aaa1Test int instructionIntMin min
|
||||||
|
38
src/HushGP/TH.hs
Normal file
38
src/HushGP/TH.hs
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
module HushGP.TH where
|
||||||
|
|
||||||
|
import Data.List
|
||||||
|
import Language.Haskell.TH
|
||||||
|
import Text.Regex.TDFA
|
||||||
|
|
||||||
|
-- This old code made this all possible :)
|
||||||
|
-- https://github.com/finnsson/template-helper/blob/master/src/Language/Haskell/Extract.hs
|
||||||
|
|
||||||
|
-- | A way to extract all functions from the file
|
||||||
|
-- `lines file` pulls all of the lines in one string from the file
|
||||||
|
-- `lex $ lines file` splits the function into a tuple
|
||||||
|
-- fst = the function nams, snd = the rest of the line
|
||||||
|
-- `concatMap lex $ lines file` maps lex onto all of the lines
|
||||||
|
-- and concats the result into a list
|
||||||
|
-- `filter (=~pattern) $ map fst $ concatMap lex $ lines file` filters
|
||||||
|
-- any line that doesn't have the passed pattern to it. "function" is a good pattern
|
||||||
|
-- for Hush.
|
||||||
|
-- `nub $ filter (=~pattern) $ map fst $ concatMap lex $ lines file` removes all
|
||||||
|
-- duplicates from the list. Or sets in this case :)
|
||||||
|
extractAllFunctions :: String -> Q [String]
|
||||||
|
extractAllFunctions pattern = do
|
||||||
|
loc <- location
|
||||||
|
-- file <- runIO $ readFile pattern
|
||||||
|
file <- runIO $ readFile $ loc_filename loc
|
||||||
|
return $ nub $ filter (=~ pattern) $ map fst $ concatMap lex $ lines file
|
||||||
|
|
||||||
|
-- | Extracts all functions from a Q [String] (to be used with extractAllFunctions)
|
||||||
|
-- funcs has a list of all functions from extractAllFunctions
|
||||||
|
-- makePair makes a tuple of a passed function holding its name as a string and actual function value
|
||||||
|
-- in that order. StateFunc :)
|
||||||
|
-- `ListE $ map makePair funcs` makes a list of these function tuples holding all function
|
||||||
|
-- names and values.
|
||||||
|
functionExtractor :: String -> Q Exp
|
||||||
|
functionExtractor pattern = do
|
||||||
|
funcs <- extractAllFunctions pattern
|
||||||
|
let makePair n = TupE [Just $ VarE $ mkName n, Just $ LitE $ StringL n]
|
||||||
|
return $ ListE $ map makePair funcs
|
Loading…
x
Reference in New Issue
Block a user