Commit a6089b89 by Mart Lubbers

Separate ggenString so that it can be modified

parent 83f28313
Pipeline #13135 passed with stage
in 36 seconds
 ... ... @@ -39,6 +39,18 @@ generic ggen a :: !GenState -> [a] genState :: GenState /** * Generates an infinite list of random strings * * @param The maximum length of the strings * @param The factor for which the probability decreases for longer strings * @param Minimum character value * @param Maximum character value * @param A list of random numbers (e.g. aStream) * @result An inifinite list of strings */ ggenString :: Int Real Int Int RandomStream -> [String] derive ggen Int, Bool, Real, Char, String derive ggen UNIT, PAIR, EITHER, CONS of gcd, OBJECT of gtd, FIELD of d, RECORD of grd derive ggen (,), (,,), (,,,), (,,,,), (,,,,,), (,,,,,,), (,,,,,,,) ... ...
 ... ... @@ -186,19 +186,22 @@ where Nothing -> f s Just limit -> take limit \$ f s ggen{|String|} s = ["hello world!","Gast","": rndStrings aStream] ggenString :: Int Real Int Int RandomStream -> [String] ggenString maxlen factor minchar maxchar stream = rndStrings stream where rndStrings [len:rnd] # len = toInt ((randIntToReal len) ^ 8.0 * (fromInt StrLen - 0.5)) # len = toInt ((randIntToReal len) ^ factor * (fromInt maxlen - 0.5)) # (chars,rnd) = seqList (repeatn len genElem) rnd string = {c \\ c<-chars} = [string:rndStrings rnd] where genElem :: RandomStream -> .(Char, RandomStream) genElem [r:rnd] = (toChar (32+((abs r) rem 94)), rnd) genElem [r:rnd] = (toChar (minchar+((abs r) rem (maxchar-minchar))), rnd) randIntToReal :: Int -> Real randIntToReal x = (toReal x + if (x >= 0) 0.0 4294967296.0) / 4294967295.0 randIntToReal :: Int -> Real randIntToReal x = (toReal x + if (x >= 0) 0.0 4294967296.0) / 4294967295.0 ggen{|String|} s = ["hello world!","Gast","":ggenString StrLen 4.0 32 126 aStream] derive ggen (,), (,,), (,,,), (,,,,), (,,,,,), (,,,,,,), (,,,,,,,) derive ggen [], [!], [ !], [!!] ... ...
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!