Я бы определил это так
import qualified Data.Map.Lazy as Map
type MultiSet' a = Map.Map a Int
Просто отображение типа a
в Int
. В математике это будет что-то вроде f : S -> N . Элементы, которые вы вставляете в него, должны быть управляемыми, потому что базовая структура Map
определяется двоичным деревом. Это не должно быть проблемой, так как вы можете забыть об этом при использовании структуры данных. Смотрите очень обширную документацию по Data.Map для функций, чтобы справиться с нашими MultiSet'
.
Теперь уже есть определение вместе с реализацией для этого, и оно называется MultiSet . Вы также можете просмотреть его исходный код , там вы видите, что они определили его почти идентичным образом (они использовали строгую версию карты).
В качестве альтернативы вы можете использовать хэш-карту, она будет выглядеть следующим образом:
import qualified Data.HashMap.Lazy as Map
type MultiSet'' a = Map.HashMap a Int
Элементы, которые вы в нее вставляете, не обязательно должны быть упорядоченными, но хэшируемыми.
Это может начать вас. Это больше похоже на то, что вы ищете?
Только что был быстрый поиск - похоже, есть несколько различных видов встроенной подсветки синтаксиса ассемблера. Какой из них вы используете?
Вставлено из: help syntax
Currently these syntax
files are included:
asm GNU assembly (the default)
asm68k Motorola 680x0 assembly
asmh8300 Hitachi H-8300 version of GNU assembly
ia64 Intel Itanium 64
fasm Flat assemlby http://flatassembler.net
masm Microsoft assembly (probably works for any 80x86)
nasm Netwide assembly
tasm Turbo Assembly (with opcodes 80x86 up to Pentium, and
MMX)
pic PIC assembly (currently for PIC16F84)
The most flexible is to add a line in your assembly file containing:
:asmsyntax=nasm
Replace "nasm" with the name of the real assembly syntax. This line must be
one of the first five lines in the file.
Этот дополнительный синтаксический скрипт из vim.org
Похоже, что на вашем скриншоте используется тип файла asm по умолчанию. Попробуйте
:set ft=nasm
, и вы должны получить некоторые изменения цвета в соответствии с этими скриншотами.
Из ваших скриншотов выше я сделал пару быстрых изменений в синтаксисе fasm vim и назвал его gasm. Его можно найти здесь на pastebin.
Скопируйте и вставьте его в свой личный каталог .vim / syntax или vimfiles / syntax и назовите его gasm.vim Затем в вашем файле сборки: set ft = gasm
Этот скрипт vim использует комментарии в форме % комментарий с включенным пространством. Вы можете увидеть это (или изменить, если хотите) в строке 116 скрипта.
Обратите внимание: не копируйте номера строк.
Я начал писать полный синтаксис GNU с нуля.
Файл синтаксиса доступен на vim.org: GNU как синтаксис для X86
А также непосредственно на GitHub: GNU как синтаксис для X86
В дополнение к основным инструкциям он будет распознают следующие расширенные инструкции Intel / AMD:
Вот как это выглядит: