3
所以我使用格雷碼發生器以生成長度爲6的所有可能的位串的發生器是如下的字符串:Haskell中:獲得單個比特從比特
gray :: Integer -> String
gray n
| n == 0 = [""]
| n > 0 = map (++"0") (gray (n-1)) ++
map (++"1") (reverse (gray (n-1)))
recipes = gray 6
然後,我試圖從每個這些字符串中獲取一個特定位並將該位轉換爲整數。我這樣做的方式如下:
cost' :: String -> Cost
cost' r i = toInteger(ord (r!!i))
現在,由於某種原因,這是行不通的。無論我使用什麼樣的'我'值,函數成本'將導致48(如果位置2中的位是0 - >例如'100000')或49(如果位於位置2的位該列表是1 - >例如'101000')。
它對我來說沒有任何意義,爲什麼這是..我的理解是,字符串在Haskell中存儲爲列表,並且要從Haskell中的列表'r'中獲得某個元素'i'執行'r !! i'。