teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

句読点編集

2019/10/21 14:07

投稿

kakkun61
kakkun61

スコア285

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  厳密に GHC の型推論の処理を追ったわけではないので多分に推測であることを了承ください。
2
2
 
3
- `(/)` の型は `a -> a -> a` です([ドキュメント](http://hackage.haskell.org/package/base-4.12.0.0/docs/Prelude.html#v:-47-))なので `a :: Int` と `b :: Int` であることと合わせて考えると、`a / b` の型が `Int` であると導き出されます。これが actual type です。
3
+ `(/)` の型は `a -> a -> a` です([ドキュメント](http://hackage.haskell.org/package/base-4.12.0.0/docs/Prelude.html#v:-47-))なので `a :: Int` と `b :: Int` であることと合わせて考えると、`a / b` の型が `Int` であると導き出されます。これが actual type です。
4
4
 
5
5
  注釈した `Double` が expected type となり、2つの比較した結果の不一致が質問の1つめのエラーです。
6
6
 

1

段落編集

2019/10/21 14:07

投稿

kakkun61
kakkun61

スコア285

answer CHANGED
@@ -1,9 +1,7 @@
1
1
  厳密に GHC の型推論の処理を追ったわけではないので多分に推測であることを了承ください。
2
2
 
3
- `(/)` の型は `a -> a -> a` です。([ドキュメント](http://hackage.haskell.org/package/base-4.12.0.0/docs/Prelude.html#v:-47-))
3
+ `(/)` の型は `a -> a -> a` です。([ドキュメント](http://hackage.haskell.org/package/base-4.12.0.0/docs/Prelude.html#v:-47-))なので `a :: Int` と `b :: Int` であることと合わせて考えると、`a / b` の型が `Int` であると導き出されます。これが actual type です。
4
4
 
5
- なので `a :: Int` と `b :: Int` であることと合わせて考えると、`a / b` の型が `Int` であると導き出されます。これが actual type です。
6
-
7
5
  注釈した `Double` が expected type となり、2つの比較した結果の不一致が質問の1つめのエラーです。
8
6
 
9
7
  次に、`a / b :: Int` と注釈すると上記の型検査はパスします。