Konsep esensial berlaku secara universal dalam beberapa cara, ya, tetapi jarang dengan cara yang bermanfaat.
Pertama-tama, dari perspektif teori tipe ini diasumsikan, bahasa "dinamis" paling baik dianggap memiliki tipe tunggal , yang berisi (antara lain) metadata tentang sifat nilai yang dilihat oleh programmer, termasuk apa yang akan disebut oleh bahasa dinamis ini sebuah "tipe" sendiri (yang bukan merupakan hal yang sama, secara konseptual). Setiap bukti semacam itu cenderung tidak menarik, sehingga konsep ini sebagian besar relevan dengan bahasa dengan sistem tipe statis.
Selain itu, banyak bahasa yang diduga memiliki "sistem tipe statis" harus dianggap dinamis dalam praktiknya, dalam konteks ini, karena mereka mengizinkan inspeksi dan konversi jenis saat dijalankan. Secara khusus, ini berarti bahasa apa pun dengan dukungan bawaan untuk "refleksi" atau semacamnya. C #, misalnya.
Haskell tidak biasa dalam berapa banyak informasi yang diharapkannya diberikan oleh suatu tipe - khususnya, fungsi tidak dapat bergantung pada nilai apa pun selain dari yang ditentukan sebagai argumennya. Di dalam bahasa dengan variabel global yang bisa berubah, di sisi lain, fungsi apa pun dapat (berpotensi) memeriksa nilai-nilai itu dan mengubah perilaku yang sesuai. Jadi fungsi Haskell dengan tipe A -> B
dapat dianggap sebagai program miniatur yang membuktikan secara tidak A
langsung B
; fungsi yang setara dalam banyak bahasa lain hanya akan memberi tahu kita hal itu A
dan apa pun keadaan global yang digabungkan menyiratkan B
.
Perhatikan bahwa sementara Haskell memang memiliki dukungan untuk hal-hal seperti tipe refleksi dan dinamis, penggunaan fitur tersebut harus ditunjukkan dalam tipe tanda tangan dari suatu fungsi; demikian juga untuk penggunaan negara global. Tidak ada yang tersedia secara default.
Ada beberapa cara untuk memecahkan hal-hal di Haskell juga, misalnya dengan memungkinkan pengecualian runtime, atau menggunakan operasi primitif non-standar yang disediakan oleh kompiler, tetapi yang datang dengan harapan kuat bahwa mereka hanya akan digunakan dengan pemahaman penuh dengan cara yang akan menang ' t merusak arti kode eksternal. Secara teori, hal yang sama dapat dikatakan untuk bahasa lain, tetapi dalam praktiknya dengan sebagian besar bahasa lain, keduanya lebih sulit untuk mencapai hal-hal tanpa "curang", dan kurang disukai untuk "menipu". Dan tentu saja dalam bahasa "dinamis" yang sebenarnya, semuanya tetap tidak relevan.
Konsep ini dapat diambil lebih jauh daripada di Haskell, juga.