Khái niệm thiết yếu áp dụng phổ biến trong một số thời trang, có, nhưng hiếm khi theo cách hữu ích.
Để bắt đầu, từ góc độ lý thuyết loại mà giả định này, các ngôn ngữ "động" được coi là có một loại duy nhất , chứa siêu dữ liệu (trong số những thứ khác) về bản chất của giá trị mà lập trình viên nhìn thấy, bao gồm cả những ngôn ngữ động này sẽ gọi là gì một "loại" bản thân (không giống nhau, về mặt khái niệm). Bất kỳ bằng chứng nào như vậy có khả năng không thú vị, vì vậy khái niệm này chủ yếu liên quan đến các ngôn ngữ có hệ thống kiểu tĩnh.
Ngoài ra, nhiều ngôn ngữ được cho là có "hệ thống loại tĩnh" phải được coi là động trong thực tế, trong bối cảnh này, vì chúng cho phép kiểm tra và chuyển đổi các loại tại thời điểm chạy. Cụ thể, điều này có nghĩa là bất kỳ ngôn ngữ nào được tích hợp, hỗ trợ theo mặc định cho "phản chiếu" hoặc tương tự. C #, ví dụ.
Haskell là không bình thường về số lượng thông tin mà nó mong đợi một loại sẽ cung cấp - đặc biệt, các hàm không thể phụ thuộc vào bất kỳ giá trị nào ngoài các giá trị được chỉ định làm đối số của nó. Trong một ngôn ngữ với các biến toàn cục có thể thay đổi, mặt khác, bất kỳ chức năng nào cũng có thể (có khả năng) kiểm tra các giá trị đó và thay đổi hành vi tương ứng. Vì vậy, một hàm Haskell với loại A -> B
có thể được coi là một chương trình thu nhỏ chứng minh điều đó A
ngụ ý B
; một chức năng tương đương trong nhiều ngôn ngữ khác sẽ chỉ cho chúng ta biết điều đó A
và bất kỳ trạng thái toàn cầu nào nằm trong phạm vi kết hợp ngụ ý B
.
Lưu ý rằng mặc dù Haskell có hỗ trợ cho những thứ như kiểu phản xạ và kiểu động, việc sử dụng các tính năng đó phải được chỉ định trong chữ ký loại của hàm; tương tự như vậy để sử dụng nhà nước toàn cầu. Không có sẵn theo mặc định.
Cũng có nhiều cách để phá vỡ mọi thứ trong Haskell, ví dụ như bằng cách cho phép ngoại lệ thời gian chạy hoặc sử dụng các hoạt động nguyên thủy không chuẩn do trình biên dịch cung cấp, nhưng chúng có một kỳ vọng mạnh mẽ rằng chúng sẽ chỉ được sử dụng với sự hiểu biết đầy đủ theo cách giành chiến thắng ' t làm hỏng ý nghĩa của mã bên ngoài. Về lý thuyết cũng có thể nói như vậy đối với các ngôn ngữ khác, nhưng trong thực tế với hầu hết các ngôn ngữ khác, việc hoàn thành mọi thứ sẽ khó khăn hơn nếu không "gian lận" và ít cau mày hơn khi "gian lận". Và tất nhiên trong các ngôn ngữ "động" thực sự, toàn bộ điều này vẫn không liên quan.
Khái niệm này có thể được đưa ra xa hơn nhiều so với trong Haskell.