Статическая проверка типов на предмет объединения типов и сопоставления с образцомPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Статическая проверка типов на предмет объединения типов и сопоставления с образцом

Сообщение Anonymous »

В функциональных языках, таких как Ocaml/Haskell/… я могу ввести что-то вроде:

Код: Выделить всё

type expr =
| Nb of float
| Add of expr * expr
| Soust of expr * expr
| Mult of expr * expr
| Div of expr * expr
| Opp of expr

let rec eval x = match x with
| Nb n -> n
| Add (e1, e2) -> (eval e1) +. (eval e2)
| Soust (e1, e2) -> (eval e1) -. (eval e2)
| Mult (e1, e2) -> (eval e1) *. (eval e2)
| Div (e1, e2) -> (eval e1) /. (eval e2)
| Opp n -> -. (eval n)
И как только мой код скомпилируется, мне будет гарантировано, что для любого x типа expr eval x всегда будет выдавать результат типа плавать. Это, в частности, означает, что мое сопоставление с образцом не забывало ни одного случая, поэтому, если позже я добавлю новый элемент в тип expr, он не сможет скомпилироваться, пока я не добавлю этот новый случай в сопоставление с образцом.
К сожалению, я не могу найти в Python ничего, что давало бы такую ​​надежную гарантию, в том числе в системе типизации Python 10… Я что-то упустил?

Подробнее здесь: https://stackoverflow.com/questions/783 ... n-matching
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»