Что использует схема Ghuloum?

Я пытаюсь проложить себе путь через Компиляторы: Бэкенд к 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 для его терпеливой справки.

8
задан Eli Barzilay 8 June 2010 в 02:07
поделиться

1 ответ

$(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.)

3
ответ дан 5 December 2019 в 23:15
поделиться
Другие вопросы по тегам:

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