キーボードから文字列を読みたいのですが、なぜ動作していないのか分かりませんが、多くの方法を試しましたが、何もできませんでした!誰かが私を助けたり、私にアイデアを与えることはできますか?キーボードから文字列を読むhaskell
type Polinom = [Int]
scriePolinom :: Polinom -> String
....
main = do
a<-getLine
--let a=[2,-5,1]
scriePolinom a
キーボードから文字列を読みたいのですが、なぜ動作していないのか分かりませんが、多くの方法を試しましたが、何もできませんでした!誰かが私を助けたり、私にアイデアを与えることはできますか?キーボードから文字列を読むhaskell
type Polinom = [Int]
scriePolinom :: Polinom -> String
....
main = do
a<-getLine
--let a=[2,-5,1]
scriePolinom a
解析に対応するデータへのライン:
import Data.List
parseIntList :: String -> [Int]
parseIntList s = [read x :: Int | x <- words s]
type Polinom = [Int]
scriePolinom :: Polinom -> String
....
main = do
a <- getLine
let intlist = parseIntList a
putStrLn $ scriePolinom intlist
'parseIntList :: String - > [Int] parseIntList s = [read x :: Int | X < - 単語S] 主=行う {< - のgetline scriePolinom(parseIntList A)} ' – Bob
「は '実行' ブロックの最後の文でなければなりません式 < - のgetline scriePolinom(parseIntList A ) "私はそれをなぜ受け取りません! – Bob
@Bob、あなたはIOモナドにいるので、何かをしなければならない、ほとんどそれを印刷して、答えに悪い – Netwave
GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help
Prelude> :type getLine -- you can also write :t getLine
getLine :: IO String
これはgetLine
は常にこの場合待ち、不純ないくつかの種類のI/O操作を行った後(あなたを与えることを示していますを入力してと入力するまで、ユーザーがキーボードの何かを入力するには、タイプString
の値を入力します。これは理にかなって:も...
Prelude> :info String -- you can also write :i String
type String = [Char] -- Defined in ‘GHC.Base’
と呼ばれる文字列、...文字のリストを。これらは、ユーザーが入力した文字/キーとまったく同じです。一般に、これらの文字はではないはPolinom
を適切に表します。たとえば、ユーザーが34958oiyq4ulbwre
と入力した場合はどうなりますか?
をのように意味のある型の値に変換すると、の入力文字列が解析されます。どのようにするかは、入力が実際にどのような形になるかによって異なります。ユーザが係数に対して通常のハスケル構文を使用すべきである場合、例えば、 [2, -5, 1]
、あなたが標準read
パーサを使用することができます:Daniel Sanchez assumesとして、あなたは10進数でスペースで区切られた数字のちょうど列を期待して、
Prelude> scriePolinom (read "[2, -5, 1]")
"[2,-5,1]"
た場合、またはを、あなたはまず、言葉としてこれらの番号を分割することができます個別に各1読み:
0:Prelude> scriePolinom . map read $ words "2 -5 1"
"[2,-5,1]"
が実行可能プログラムでこれを使用するには、あなたはgetLine
とread
の既製のビルドの組み合わせを使用することができますread
/readLn
が不正な形式の入力に対する堅牢ではないことを
main :: IO()
main = do
a <- readLn
putStrLn $ scriePolinom a
注意(彼らは合計機能じゃない) - 明示的な例外処理でそれをラップしない限り、これは単にプログラムをクラッシュします。重大なアプリケーションの場合は、フル機能の解析ライブラリ(など)を使用することをおすすめします。
'main'は' IO() '型を必要としますが、' scriePolinom a'は 'String'型です。 – chepner