How do I get the type of a value in Scheme?

前端 未结 4 1638
情话喂你
情话喂你 2021-01-01 13:58

I want a function that gets the type of a value at runtime. Example use:

(get-type a)

where a has been defined t

4条回答
  •  时光取名叫无心
    2021-01-01 14:23

    In Scheme implementations with a Tiny-CLOS-like object system, you can just use class-of. Here's a sample session in Racket, using Swindle:

    $ racket -I swindle
    Welcome to Racket v5.2.1.
    -> (class-of 42)
    #
    -> (class-of #t)
    #
    -> (class-of 'foo)
    #
    -> (class-of "bar")
    #
    

    And similarly with Guile using GOOPS:

    scheme@(guile-user)> ,use (oop goops)
    scheme@(guile-user)> (class-of 42)
    $1 = #<  14d6a50>
    scheme@(guile-user)> (class-of #t)
    $2 = #<  14c0000>
    scheme@(guile-user)> (class-of 'foo)
    $3 = #<  14d3a50>
    scheme@(guile-user)> (class-of "bar")
    $4 = #<  14d3b40>
    

提交回复
热议问题