Я хочу построить случайную строку, состоящую только из алфавитных символов. Это код, который я до сих пор:Изменение типов в Haskell
letters :: String
letters = "abcdefghijklmnopqrstuvwxyz"
{- | Generates any lower case alpha character.
-}
lowerAlpha :: Gen Char
lowerAlpha = oneof (map return letters)
getString :: Int -> String
getString 0 = []
getString n = lowerAlpha : getString (n - 1)
GetString передается случайный Int между 1 и 25. Поскольку lowerAlpha возвращает Gen Char GetString не будет работать, как он ожидает Чар, чтобы построить строку. Есть ли способ изменить строку Gen на строку? Это строка кода, где происходит проблема - getString n = lowerAlpha : getString (n - 1)
Если вы могли бы сделать это [MCVE]. Это немного раздражает, когда нам нужно угадать, что такое «Gen» и «oneof». – leftaroundabout
Это вопрос о Quickcheck в частности, или о случайности в целом? – Michael
Поскольку 'Char' является экземпляром' Enum', вы можете написать 'letters = ['a' .. 'z']', чтобы избежать необходимости вводить все строчные буквы вручную. – chepner