I use a pattern matcher that can match against types in Scheme, a
language without static typing.  Static types are just not the crucial
feature that some people make them out to be.  I believe this
criticism of Pascal and C from SICP applies to other languages with
static types (sans the pointer stuff):<p><pre><code>    Pascal and C admit structures whose elements are structures. However,
    this requires that the programmer manipulate pointers explicitly, and
    adhere to the restriction that each field of a structure can contain
    only elements of a prespecified form. Unlike Lisp with its pairs,
    these languages have no built-in general-purpose glue that makes it
    easy to manipulate compound data in a uniform way.
</code></pre>
With static typing, it&#x27;s also difficult to write procedures that operate on arguments of which the type is none of the procedure&#x27;s business.<p><a href="https:&#x2F;&#x2F;sarabander.github.io&#x2F;sicp&#x2F;html&#x2F;2_002e2.xhtml#FOOT73" rel="nofollow">https:&#x2F;&#x2F;sarabander.github.io&#x2F;sicp&#x2F;html&#x2F;2_002e2.xhtml#FOOT73</a>