aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adam@chlipala.net>2018-08-29 21:44:02 -0400
committerGravatar Adam Chlipala <adam@chlipala.net>2018-08-29 21:44:02 -0400
commit1f11b7ba4e2fdf116aaf0f4d8ca7cde55daa410c (patch)
treef4aa05ffdec8d728d816e7b7ca0447f0efb4f7d9
parent7eec6f5c0d702323bd735e2184ff74f27ad37d17 (diff)
Detect lambda abstractions over type classes as deserving of implicit-argument status
-rw-r--r--src/elab_env.sml5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/elab_env.sml b/src/elab_env.sml
index 0474bf7c..a2097aa9 100644
--- a/src/elab_env.sml
+++ b/src/elab_env.sml
@@ -493,10 +493,11 @@ fun class_name_in (c, _) =
case c of
CNamed n => SOME (ClNamed n)
| CModProj x => SOME (ClProj x)
+ | CAbs (_, _, c') => class_head_in c'
| CUnif (_, _, _, _, ref (Known c)) => class_name_in c
| _ => NONE
-fun isClass (env : env) c =
+and isClass (env : env) c =
let
fun find NONE = false
| find (SOME c) = Option.isSome (CM.find (#classes env, c))
@@ -504,7 +505,7 @@ fun isClass (env : env) c =
find (class_name_in c)
end
-fun class_head_in c =
+and class_head_in c =
case #1 c of
CApp (f, _) => class_head_in f
| CUnif (_, _, _, _, ref (Known c)) => class_head_in c