Я пытаюсь проложить себе путь через Компиляторы: Бэкенд к Frontend (и Наоборот Снова) Abdulaziz Ghuloum. Кажется сокращенным от того, что можно было бы ожидать в полном курсе/семинаре, таким образом, я пытаюсь заполнить части сам.
Например, я попытался использовать его среду тестирования в разновидности R5RS DrScheme, но этому, кажется, не нравится макро-материал:
src/ghuloum/tests/tests-driver.scm:6:4: read: illegal use of open square bracket
Я прочитал его вводную газету на курсе, Поэтапном подходе для Конструкции Компилятора, которая дает замечательный обзор методов, используемых, и упоминает несколько Схем с опциями, которые можно было бы хотеть реализовать для 'дополнительного кредита', но он не упоминает Схему, которую он использует в курсе.
Обновление
Я все еще рою в исходный вопрос (расследующий опции, такие как Мелкая Схема, предложенная Eli ниже), но нашел интересную ссылку, касающуюся работы Gholoum, таким образом, я включаю его здесь.
[Схема Ikarus] (http://en.wikipedia.org/wiki/Ikarus_ (Scheme_implementation)) является фактической реализацией идей Ghuloum и, кажется, была частью его работы доктора философии. Это, как предполагается, одна из первых реализаций R6RS. Я пытаюсь установить Ikarus теперь, но настраивать сценарий не хочет распознавать установку моей системы libgmp.so, таким образом, мои проблемы все еще не разрешены.
Пример
Следующий пример, кажется, работает в PLT 2.4.2 выполнения в DrEd с помощью Довольно Большого
(require lang/plt-pretty-big)
(load "/Users/donaldwakefield/ghuloum/tests/tests-driver.scm")
(load "/Users/donaldwakefield/ghuloum/tests/tests-1.1-req.scm")
(define (emit-program x)
(unless (integer? x) (error "---"))
(emit " .text")
(emit " .globl scheme_entry")
(emit " .type scheme_entry, @function")
(emit "scheme_entry:")
(emit " movl $~s, %eax" x)
(emit " ret")
)
Попытка заменить потребовать директиву #lang схемой приводит к сообщению об ошибке
foo.scm:7:3: expand: unbound identifier in module in: emit
который, кажется, происходит из-за отказа к нагрузочным-тестам-driver.scm. Попытка использовать #lang r6rs отключает REPL, который я действительно хотел бы использовать, таким образом, я собираюсь попытаться продолжить Довольно Большой.
Моя благодарность Eli Barzilay для его терпеливой справки.
$(document).ready(function() {
$('input[type=submit]', this).attr('disabled', false);
$('#myform').submit(function(){
$('input[type=submit]', this).attr('disabled', true);
});
});
При использовании jQuery кнопка не будет отключена при использовании задней кнопки в браузере. Испытано на FF 3.5.
-121--4244659-Спасибо за ваши ответы - подумав немного больше об этом я придумал следующий код:
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as mpl
from scipy.interpolate import interp1d
from scipy.ndimage import map_coordinates
def polar2cartesian(r, t, grid, x, y, order=3):
X, Y = np.meshgrid(x, y)
new_r = np.sqrt(X*X+Y*Y)
new_t = np.arctan2(X, Y)
ir = interp1d(r, np.arange(len(r)), bounds_error=False)
it = interp1d(t, np.arange(len(t)))
new_ir = ir(new_r.ravel())
new_it = it(new_t.ravel())
new_ir[new_r.ravel() > r.max()] = len(r)-1
new_ir[new_r.ravel() < r.min()] = 0
return map_coordinates(grid, np.array([new_ir, new_it]),
order=order).reshape(new_r.shape)
# Define original polar grid
nr = 10
nt = 10
r = np.linspace(1, 100, nr)
t = np.linspace(0., np.pi, nt)
z = np.random.random((nr, nt))
# Define new cartesian grid
nx = 100
ny = 200
x = np.linspace(0., 100., nx)
y = np.linspace(-100., 100., ny)
# Interpolate polar grid to cartesian grid (nearest neighbor)
fig = mpl.figure()
ax = fig.add_subplot(111)
ax.imshow(polar2cartesian(r, t, z, x, y, order=0), interpolation='nearest')
fig.savefig('test1.png')
# Interpolate polar grid to cartesian grid (cubic spline)
fig = mpl.figure()
ax = fig.add_subplot(111)
ax.imshow(polar2cartesian(r, t, z, x, y, order=3), interpolation='nearest')
fig.savefig('test2.png')
Который не является строго пересчитать, но работает хорошо для того, что мне нужно. Просто разместите код на случай, если он пригодится кому-либо еще. Не стесняйтесь предлагать улучшения!
-121--2353255- Язык, который он использует, скорее всего, Chez Scheme. Независимо от этого, язык R5RS в PLT является довольно строгой версией R5RS, с расширениями, такими как квадратные скобки, бросающие ошибки - и вы можете получить больше пробега, используя язык по умолчанию # lang scheme
. (Или, если это не удастся, попробуйте проверить, можете ли вы работать с Petit - бесплатная версия Chez.)