как использовать erlang lists:map функция

Я только нашел что один здесь . Это не закончено - но возможно начальная точка... И в то время как Вы в нем, Вы могли бы хотеть попробовать этот lib с Jiras Xml-Rpc. Возможно, бедные укомплектовывают Visual Studio, которую Pluign не все это трудное записать?!

9
задан Quincy 10 October 2009 в 14:29
поделиться

4 ответа

карта используется здесь для выполнения функции

T0 = now(),                           % start timer
[ G() || _ <- NN ],                   % make N calls to F
1.0e-6*timer:now_diff(now(), T0)/N    % average time per call

для каждого элемента MM . map вернет новый список того же размера, где каждый элемент нового списка является результатом применения вышеуказанной функции к соответствующему элементу MM .

Вы можете invoke time_it , например:

moduleName:time_it(fun moduleName:dummy/1, 10, 100).
6
ответ дан 3 November 2019 в 01:02
поделиться

Если у вас есть функция moduleName: dummy / 1, вы можете выполнить одно из следующих действий

  1. Если вы можете отредактировать time_it / 3 , то вызовите ] F (параметр-константа) вместо F () . Я предполагаю, что это так.
  2. В противном случае вызовите M1: time_it (fun () -> M2: dummy (constant_parameter) end, N, M) . dummy не будет вызываться напрямую, а только F внутри time_it.
1
ответ дан 3 November 2019 в 01:02
поделиться

Определяет ли стандарт HTTP или что-то еще, какая кодировка должна использоваться для специальных символов, прежде чем они будут закодированы в URL-адресе с помощью% XXs?

Стандарт HTTP, нет. Но другой стандарт, IRI, может вступить в игру.

URI представляют собой явно (однократно% -декодированные) байтовые последовательности. На какие символы Unicode отображаются эти байты, не указано ни в стандарте URI, ни в стандарте HTTP для http: -scheme URI.

В частности, для параметров запроса: веб-браузеры будут использовать кодировку исходной страницы для отправки формы GET URL , поэтому, если у вас есть страница в ISO-8859-1 и вы поместите 'é' в поле поиска, вы получите '? search =% E9', но если вы сделаете то же самое на странице, закодированной как UTF-8, вы получится? search =% C3% E9. Если вы не обслуживаете свою страницу формы с какой-либо конкретной кодировкой, браузер угадает, чего вы не делаете. Я не хочу, так как из-за этого будет невозможно угадать, в каком формате будет отправлено сообщение.

Для других частей URL-адреса браузер не будет генерировать их сам, но если вы предоставите его без Символы ASCII в ссылках обычно кодируются как UTF-8. Это ненадежно, так как зависит от настроек браузера и локали, поэтому на данный момент лучше не использовать его.

Стандарт, который правильно разрешает использование не-ASCII символов в ссылках, - это IRI . IRI преобразуется в URI по UTF-8 -% - кодируя большую часть URL, но вместо этого имя хоста преобразуется с использованием Punycode . Для совместимости лучше пока не полагаться на то, что браузеры понимают IRI в ссылках. Вместо этого UTF-8-затем -% - кодирует ваш путь и символы параметров самостоятельно. В современных браузерах они по-прежнему будут отображаться как правильные символы в адресной строке;

0
ответ дан 3 November 2019 в 01:02
поделиться

Назначение lists: map в функции time_it - просто запустить внутренняя функция M раз. Когда вы видите этот шаблон:

L = lists:seq(1,M),
lists:map(fun(_)-> Foo() end, L)

Это просто означает вызов Foo () снова и снова M раз и возврат результатов каждого вызова в списке. Фактически он составляет список целых чисел [1,2,3, ... N] , а затем вызывает Foo () один раз для каждого члена списка.
Автор time_it снова проделывает тот же трюк, потому что time_it необходимо вызвать функцию, которую вы ему передали, N * M раз. Итак, внутри внешнего цикла, который выполняется M раз, они используют другую технику для выполнения внутреннего цикла N раз:

L = lists:seq(1,N),
[Foo() || _ <- L]

Это дает точно такой же результат, что и код выше, но на этот раз Foo вызывается N раз .

Причина, по которой у вас возникли проблемы с использованием time_it с вашей фиктивной функцией, заключается в том, что time_it принимает функцию с 0 параметрами, а не с 1. Поэтому вам нужно создать фиктивную функцию и назовите это так:

dummy() -> 
    %% do something here you want to measure
    ok.

measure_dummy() ->
    time_it(fun someModule:dummy/0, 10, 100).
4
ответ дан 3 November 2019 в 01:02
поделиться
Другие вопросы по тегам:

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