# \#\<&undefined-variable ... name: eof-object\>

**URL:** https://community.spritely.institute/t/undefined-variable-name-eof-object/710
**Category:** Hoot: Guile in WASM
**Created:** [May 3, 2025, 5:22pm UTC](https://community.spritely.institute/t/undefined-variable-name-eof-object/710 "2025-05-03T17:22:37Z")
**Posts on this page:** 1
**Page:** 2

<div class="post-metadata">

### Author: ![dthompson](https://yyz2.discourse-cdn.com/flex030/user_avatar/community.spritely.institute/dthompson/32/95_2.png) [@dthompson](https://community.spritely.institute/u/dthompson)
#### Post date: [May 7, 2025, 3:14pm UTC](https://community.spritely.institute/t/undefined-variable-name-eof-object/710/21 "2025-05-07T15:14:55Z")

</div>

Oh, the issue is because Goblins exports a procedure named `$`, so the `$` in the `match` expression is no longer treated as a syntax literal.

Here’s a working program:

```scheme
(use-modules (hoot records)
             (ice-9 match)
             ((goblins) #:hide ($)))

(define-record-type <foo>
  (make-foo bar)
  foo?
  (bar foo-bar))

(match (list (make-foo 1) (make-foo 2))
  ((($ <foo> bar)
    ($ <foo> bar*))
   (pk (cons bar bar*))))

```

This gets rid of the `$` operator entirely. To get it back, you can rename it with an import expression like `((goblins) #:select ($) #:prefix g:)`

[Previous page](https://community.spritely.institute/t/undefined-variable-name-eof-object/710.md?page=1)
