I have a stripped-down
define-type of a function definition:
(define-type FunDef (fundef (fn-name symbol?)))
Here is a function definition which satisfies the
How do I get the name of the function? For the example I gave, how to get
I tried these and they don't work:
(second (fundef 'f)) (second (list (fundef 'f))) (second '(fundef 'f))
What is the correct way to get the name of the function?
I tried the suggestion to "deconstruct it with type-case". Here's what I tried:
(define (fundef-fun-name fundef) (type-case FunDef fundef [fundef (fn-name) fn-name]))
That generated this error message:
string:3:9: type-case: this is not a variant of the specified type
If I understand that error message, it is saying that
fundef (fn-name) is not correct. It appears to me to be correct. What am I missing?
You have a naming issue – the procedure parameter can't have the same name as the
Also, reusing the name "fn-name" in the matched pattern is a bit confusing.
Here is a working example:
(define (fundef-fun-name fun) (type-case FunDef fun [fundef (name) name]))