Что эквивалентно выражению Mathematica в Racket? - PullRequest
1 голос
/ 01 марта 2012

Я ищу что-то похожее на ToExpression , которое доступно в Mathematica.Я просто хочу преобразовать строку в выражение и оценить выражение.В качестве первого прохода мои строки будут включать только числа и арифметические операторы, а не даже скобки.

Если мне нужно написать это, пожалуйста, укажите мне направление соответствующих предопределенных модулей / определений, которые яследует использовать.

Ответы [ 3 ]

2 голосов
/ 01 марта 2012

Может быть, вы можете использовать этот синтаксический анализатор для инфиксных выражений.

http://planet.racket -lang.org / пакет источника / soegaard / infix.plt / 1/0 / планета-документы / ручной / index.html

Вот небольшой пример (для установки библиотеки требуется некоторое время - кажется, что в наши дни старый набор тестов Schematics требует вечной установки - мне нужно переключиться на встроенный).

#lang at-exp racket
(require (planet soegaard/infix)
         (planet soegaard/infix/parser))
(display (format "1+2*3 is ~a\n" @${1+2*3} ))

(parse-expression #'here (open-input-string "1+2*3"))

Вывод будет:

1+2*3 is 7
.#<syntax:6:21 (#%infix (+ 1 (* 2 3)))>

Функция parse-expression анализирует выражение в строке и возвращает объект синтаксиса, который напоминает вывод ToExpression.

1 голос
/ 01 марта 2012
1 голос
/ 01 марта 2012

Относится ли раздел к динамическая оценка к вашему вопросу? Вы можете анализировать строки в выражениях, используя комбинацию read и open-input-string . Полученные выражения можно оценить с помощью или без помощи песочницы .

...