Введите переменную как локаль - PullRequest
1 голос
/ 03 июля 2019

В Изабель есть способ гарантировать, что переменная типа может быть интерпретацией локали?

Я знаю, что могу, например, гарантировать, что переменная типа принадлежит определенному классу:

isValid :: 'a::ord =>: bool

Однако я не могу найти, как распространить эту идею на локаль:

class address ....
<snip>
locale Message =
   fixes
     sender   :: "'message => 'address::address" and
     receiver :: "'message => 'address::address" and
     isValid ::  "'message => bool"

locale Filter =
  fixes
    fiterFunc :: "'filter => 'message::Message => filterResult"

Локаль фильтра выдает ошибки, такие как неопределенный класс.Есть ли способ написать такое выражение?

1 Ответ

0 голосов
/ 17 июля 2019

Интерпретация локали описана в руководстве по локали и в справочном руководстве. Один из моих предыдущих ответов на SO содержит соответствующие ссылки: ссылка . Из раздела 3.3.6 справочного руководства: «Сортировки имеют очень простой внутренний синтаксис, который представляет собой либо отдельное имя класса c, либо список {c1, ..., cn}, относящийся к пересечению этих классов». Следовательно, невозможно использовать локаль как часть некоторой переменной типа. Механизм интерпретации локали совсем другой.

...