Zulip Chat Archive
Stream: lean4
Topic: Fixing arguments without triggering type class inference
Markus Schmaus (Dec 13 2023 at 08:23):
In the following example doNothing and doNothing' work perfectly fine. doNothing' is just doNothing with α fixed to Nat. But when I try to define doNothing'' by fixing α to Nat, this triggers type class inference and Lean throws an error. Is it possible to define doNothing' in terms of doNothing without prematurely triggering type class inference?
def doNothing {α : Type u} {stream : Type v} [Stream stream α] (s : stream) : stream := s
#eval doNothing [1, 2, 3]
def doNothing' {stream : Type v} [Stream stream Nat] (s : stream) : stream := s
#eval doNothing' [1, 2, 3]
def doNothing'' := doNothing (α := Nat)
Eric Rodriguez (Dec 13 2023 at 09:24):
doNothing'' would need a parameter [Stream stream Nat], I think
Markus Schmaus (Dec 13 2023 at 11:53):
This wasn't what I meant. Let me try to be more precise.
How can I define doNothing'' in terms of doNothing, such that it has the same type signature as doNothing'?
Mauricio Collares (Dec 13 2023 at 11:56):
def doNothing'' := @doNothing (α := Nat)
Last updated: May 02 2025 at 03:31 UTC