Серверы градиента как внешние файлы в SVG [дубликат]

Необходимо сначала понять, каков функтор. Перед этим поймите функции высшего порядка.

А функция высшего порядка является просто функцией, которая берет функцию в качестве аргумента.

А функтор является любой конструкцией типа T, для которого там существует функция высшего порядка, назовите его map, который преобразовывает функцию типа a -> b (учитывая любые два типа a и b) в функцию T a -> T b. Этот map функция должна также повиноваться законам тождества и составу, таким образом, что следующие выражения возвращают true для всего p и q (нотация Haskell):

map id = id
map (p . q) = map p . map q

, Например, конструктор типа звонил List, функтор, если к нему прилагается функция типа (a -> b) -> List a -> List b, который подчиняется законам выше. Единственная практическая реализация очевидна. Получающееся List a -> List b функция выполняет итерации по данному списку, звоня эти (a -> b) функция для каждого элемента, и возвращает список результатов.

А монада является по существу просто функтором T с двумя дополнительными методами, join , типа T (T a) -> T a, и unit (иногда называемый return, fork, или pure) типа a -> T a. Для списков в Haskell:

join :: [[a]] -> [a]
pure :: a -> [a]

, Почему это полезно? Поскольку Вы могли, например, map по списку с функцией, которая возвращает список. Join берет получающийся список списков и связывает их. List монада, потому что это возможно.

можно записать функцию, которая делает map, тогда join. Эта функция вызвана bind, или flatMap, или (>>=), или (=<<). Это обычно, как пример монады приведен в Haskell.

монада А должна удовлетворить определенные законы, а именно, это join должно быть ассоциативно. Это означает, что, если у Вас есть значение x из типа [[[a]]] тогда join (join x), должен равняться join (map join x). И pure должны быть идентификационные данные для [1 138] таким образом что join (pure x) == x.

5
задан Community 23 May 2017 в 11:45
поделиться

2 ответа

В спецификации SVG просто говорится, что вы можете использовать URI - так что это должно быть возможно. Поддержка браузера, конечно, другое дело.

Я только что написал и протестировал небольшой образец файла.

Он не работает в Inkscape, но он действительно работает с Apache Batik Toolkit.

Для поддержки браузера, Я загрузил файл на browsershots.org и резюмирую его: некоторые браузеры поддерживают внешние градиенты, некоторые - нет. e.g.:

  • Firefox 3.0 NO
  • Firefox 3.5 YES
  • Opera 9.64, 10.0 YES
  • Safari 4 NO
  • Chrome 2.0 NO
3
ответ дан 15 December 2019 в 06:32
поделиться

Если я правильно понял, измените URL-адрес на

<rect fill="url(grad.svg?param=my_grad" />

А затем динамически сгенерировать SVG?

0
ответ дан 15 December 2019 в 06:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: