LINUX.ORG.RU

Избранные сообщения AndreyKl

Вопрос терминологии

Форум — Development

Скажите, как правильно называется функция, которая возвращает функцию, которая применяет функцию к функциям от агрумента? %))

Вот это:

(define (f/apply ff . fn)
  (lambda args (apply ff (map (lambda (f) (apply f args)) fn))))

Надо написать комментарий, но я не знаю как это обозвать.

Используется, например, так: если нужна функция f(x) = sin(x) * cos(x), пишем (define f (f/apply * sin cos)) и получаем требуемую функцию.

 , ,

Puzan
()

Как сделать несколько типов с одними и теми же конструкторами в Haskell?

Форум — Development

Файл Test.hs:

data RestrictionMechanismName = Seccomp | AppArmor | SeLinux | Namespaces | Chroot | Capabilities | CGroups

data LinuxSecurityModule = AppArmor | SeLinux

Из-за строки
data LinuxSecurityModules = AppArmor | SeLinux

`stack runhaskell Test.hs` выдаёт ошибку
Test.hs:3:29:
    Multiple declarations of ‘AppArmor’
    Declared at: Test.hs:1:43
                 Test.hs:3:29

Test.hs:3:40:
    Multiple declarations of ‘SeLinux’
    Declared at: Test.hs:1:54
                 Test.hs:3:40

Но по смыслу AppArmor и SeLinux это и RestrictionMechanismName и LinuxSecurityModule. Как выход пока сделал функцию:
linuxSecurityModules :: [RestrictionMechanismName]
linuxSecurityModules = [AppArmor, SeLinux]

Есть ли возможность в Haskell сделать, чтобы значение принадлежало нескольким типам по-другому для этого примера?

 

ProtoH
()