2013-07-30 5 views
5

Я обнаружил, что polyml - это реализация ML, которую можно легко установить на Ubuntu (с именем polyml в репозитории и может быть выполнено с poly). Я следую за A Gentle Introduction to ML Эндрю Камминг. После нескольких минут эксперимента с интерпретатором polyml я обнаружил, что он не поддерживает readline (нажатие стрелки вверх вызывает ^[[A).Как добавить поддержку readline в polyml-интерпретаторе?

Это не кажется нормальным для переводчика. Это должно произойти только в том случае, если у меня нет установленной readline, но мой интерпретатор Python не ведет себя так.

+0

sml/nj также должен быть доступен как пакет «smlnj» под ubuntu, так и с помощью mlton (хотя «всего» всего компилятора программы). –

ответ

7

Самый простой способ добавить Readline поддержки в терминальную программу, которая изначально не поддерживает его, чтобы вызвать программу с помощью rlwrap , Вы можете установить пакет с таким же именем несколькими менеджерами пакетов. Нажатие в примерах ниже:

$ mosml  
Moscow ML version 2.10 
Enter `quit();' to quit. 
- ^[[A 

Вы можете запустить его, как это:

$ rlwrap mosml 
Moscow ML version 2.10 
Enter `quit();' to quit. 
- stuff I typed from last session; 

Или вы можете добавить псевдоним в вашем ~/.bashrc или аналогичные:

alias mosml='rlwrap mosml -P full' 
1

If вас интересует стандарт ML и Poly/ML, вы также должны взглянуть на Isabelle/ML. Изабель в основном ориентирована как среда доказательства доказательств, но может также использоваться как система ML - если вы не возражаете загружать 300 МБ и 600-800 МБ дискового пространства, чтобы получить полную IDE.

ML фрагменты могут быть собраны и оценены на месте, путем вложения их в Isabelle источник теории, как это:

theory Scratch 
imports Main 
begin 

ML {* 
    fun f x = x + 1 
*} 

end 

В Isabelle/jEdit это дает подсказку о inferrred типов и т.д. - немного больше, чем только readline, но полезно для обучения SML.