# How can I test a procedure to determine a procedure was the result

**URL:** <https://racket.discourse.group/t/how-can-i-test-a-procedure-to-determine-a-procedure-was-the-result/367>\
**Category:** Questions & Answers\
**Created:** [December 7, 2021, 1:11am UTC](https://racket.discourse.group/t/how-can-i-test-a-procedure-to-determine-a-procedure-was-the-result/367 "2021-12-07T01:11:44Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![decuser](https://avatars.discourse-cdn.com/v4/letter/d/5e9695/32.png) [@decuser](https://racket.discourse.group/u/decuser)\
**Post date:** [December 7, 2021, 1:11am UTC](https://racket.discourse.group/t/how-can-i-test-a-procedure-to-determine-a-procedure-was-the-result/367/1 "2021-12-07T01:11:44Z")

</div>

That is if I type:

```scheme
+
#<procedure:+> 
is the value of the evaluation. If I then:
(check-expect '#<procedure:+> +)
it's bad syntax '#<'
or if I type (check-expect #<procedure:+> +)
it's the same.

```

---

<div class="post-metadata">

**Author:** ![kablooey](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/kablooey/32/226_2.png) [@kablooey](https://racket.discourse.group/u/kablooey)\
**Post date:** [December 7, 2021, 2:49am UTC](https://racket.discourse.group/t/how-can-i-test-a-procedure-to-determine-a-procedure-was-the-result/367/2 "2021-12-07T02:49:15Z")

</div>

Use the [procedure?](https://docs.racket-lang.org/reference/procedures.html#%28def._%28%28quote._~23~25kernel%29._procedure~3f%29%29) predicate.

```scheme
> (procedure? +)
#t
> (procedure? "foo")
#f
> (check-pred procedure? +)
> (check-pred procedure? "foo")
--------------------
FAILURE
name: check-pred
location: stdin:?:?
params: '(#<procedure:procedure?> "foo")
--------------------

```

---

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [December 7, 2021, 2:59am UTC](https://racket.discourse.group/t/how-can-i-test-a-procedure-to-determine-a-procedure-was-the-result/367/3 "2021-12-07T02:59:00Z")

</div>

Hmm... I claim that you're looking for

```scheme
#lang htdp/asl

(check-expect + +)

```

... except that this reveals a larger problem: `check-expect` refuses to compare functions, and that's for a very good reason: in general, it's not possible to determine whether two functions are the same in a finite amount of time. For instance, it might be that the functions differ when called with 27719370427. How can racket figure that out? In general, you just have to try them all.

---

<div class="post-metadata">

**Author:** ![decuser](https://avatars.discourse-cdn.com/v4/letter/d/5e9695/32.png) [@decuser](https://racket.discourse.group/u/decuser)\
**Post date:** [December 7, 2021, 4:09am UTC](https://racket.discourse.group/t/how-can-i-test-a-procedure-to-determine-a-procedure-was-the-result/367/4 "2021-12-07T04:09:49Z")

</div>

That makes sense to me. But, I'm really looking to see if + is a procedure, rather than if it 'equals' a given procedure.

---

<div class="post-metadata">

**Author:** ![kablooey](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/kablooey/32/226_2.png) [@kablooey](https://racket.discourse.group/u/kablooey)\
**Post date:** [December 7, 2021, 7:29am UTC](https://racket.discourse.group/t/how-can-i-test-a-procedure-to-determine-a-procedure-was-the-result/367/5 "2021-12-07T07:29:04Z")

</div>

Check out my answer above.

---

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [December 8, 2021, 2:59am UTC](https://racket.discourse.group/t/how-can-i-test-a-procedure-to-determine-a-procedure-was-the-result/367/6 "2021-12-08T02:59:12Z")

</div>

Ah! @kablooey correctly guessed your requirement!
