Tôi đang cố gắng để thực hiện một chức năng tự động hoàn với Haskeline:kiểu biến mơ hồ với Haskeline autocompletion
import System.Console.Haskeline
import System.Console.Haskeline.IO
import Data.List
mySettings :: Settings IO
mySettings = defaultSettings {
historyFile = Just "myhist"
, complete = completeWord Nothing " \t" $ return . search
}
keywords :: [String]
keywords = ["Point","Line","Circle","Sphere"]
search :: String -> [Completion]
search str = map simpleCompletion $ filter (str `isPrefixOf`) keywords
main :: IO()
main = do
inputLine <- initializeInput mySettings
putStrLn "done"
nhưng tôi một chút thất vọng bởi lỗi này GHC:
Ambiguous type variable `t0' in the constraint:
(Control.Monad.IO.Class.MonadIO t0)
arising from a use of `defaultSettings'
Probable fix: add a type signature that fixes these type variable(s)
Tôi đặt loại cho mỗi chức năng nhưng nó không giải quyết được vấn đề.
Bạn có ý tưởng về sự mơ hồ về loại này và cách xóa không?
Nó thực sự là lạ.Tôi nghĩ rằng nó có một cái gì đó để làm với thực tế là các bản ghi cập nhật cần phải định hướng các loại trước khi có thể kiểm tra xem các bản cập nhật là chính xác hay không. Ở đây bạn có thể tìm thấy [SSCCE] (http://coliru.stacked-crooked.com/a/b1ea39172157a686) để có ví dụ tổng quát hơn. – Shoe