From 1f11b7ba4e2fdf116aaf0f4d8ca7cde55daa410c Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Wed, 29 Aug 2018 21:44:02 -0400 Subject: Detect lambda abstractions over type classes as deserving of implicit-argument status --- src/elab_env.sml | 5 +++-- 1 file 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 -- cgit v1.2.3