Программируемый калькулятор

python
>>> import cmath
>>> cmath.sqrt(-1)
1j
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
>>> cmath.sqrt(-1)
а я использовал ... math.sqrt (-1) ...... и получил отлуп .....
Значит python то же умеет, но юзер должен знать, что нужно импортировать соответствущую библиотеку
Аналогично, наверное, и в irb ...., где я то же получаю отлуп
irb(main):022:0> Math.sqrt(2)
=> 1.4142135623730951
irb(main):026:0> Math.sqrt(-1)
Math::DomainError: Numerical argument is out of domain - "sqrt" .....

Что я и писал, чтобы перейти на эти новые языки я должен хорошо почитать их ..... малой кровью не получиться ...
А вот в clisp я даже не обязан и думать об этом …. главное правильно расставить скобки ..... чем он мне и нравится ...
Break 10 [11]> (- (sqrt (- (! 5) 125)) #C(-1 1))
#C(1 1.236068)


PS ... особо мне нравится работа в разных системах счисления .... очень просто и быстро переход в любую из них
Например, переходим в 16-ричную систему счисления
Break 10 [11]> (setf *print-base* 16)
Break 10 [11]> (+ 6 5)
B
И обратно в 10-тичную
Break 10 [11]> (setf *print-base* 10)
Break 10 [11]> (+ 6 5)
11
Команды целиком писать заново не нужно, можно вернуться к прежней и подправить ее (как в bash)
Ошибки не исчезают с опытом - они просто умнеют
vasek
Break 10 [11]> (- (sqrt (- (! 5) 125)) #C(-1 1))
#C(1 1.236068)
это я вообще прочитать не могу. )))
в питоне все понятно даже не знающему его.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
это я вообще прочитать не могу. )))
в питоне все понятно даже не знающему его.
Основное правило clisp — минимальным кирпичиком всего является атом, которым является и список (a b c) - каждый список должен быть взят в скобки, а количество прямых и обратных скобок должно совпадать.
Пример списка - ( знак_операции атом1 атом2 ) , например 2 + 2 запишется как (+ 2 2) .... типа польская строка
А значит выражение …... квадр.корень (5! - 125) - (-1 + i)
запишется как (- (sqrt (- (! 5) 125)) #C(-1 1))
(где комплексное число записывается как #C(a b) = a + bi )

PS.... хотя пример взят неудачный - нельзя так грубо обращаться с комплексными числами
Ошибки не исчезают с опытом - они просто умнеют
vasek
И оказалось, что нового ни хрена не придумали, все современные языки передрали все хорошее из старых языков программирования и живут на этом
Так может, и не надо ничего выдумывать? Скажите, что вас не устраивает.
nafanja
это я вообще прочитать не могу. )))
в питоне все понятно даже не знающему его.
Просто Python взял стандартные математические обозначения для функций.
beroal
Скажите, что вас не устраивает.
Меня все устраивает в старом окружении ......... хотел перейти на новенькое, но мешает видимо и консерватизм и не желание переходить на новое, которое, как мне показалось, ни чем не лучше старого, а в чем то даже и хуже.
Ошибки не исчезают с опытом - они просто умнеют
vasek
не желание переходить на новое, которое, как мне показалось, ни чем не лучше старого, а в чем то даже и хуже
полностью согласен
vasek
например 2 + 2 запишется как (+ 2 2)
чем второй вариант лучше первого?
в принципе научиться думать таким макаром можно, но зачем?...
инфиксная нотация естественнее для человека.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja, забудь и не думай об этом .... каждый привыкает (прикипает) к своему .....
а насчет lisp ..... этот язык не из простых ... и в то же время он может обрабатывать любые типы даже себя самого .... а потому это единстаенный пока язык, который принят на вооружение для разработки искусственного интелекта ..... кстати, известный всем автокад написан на lisp ....
UPD .... в кругу программистов lisp бытует высказывание .... никого не хочу обидеть, это просто высказывание, с которым лично я не согласен
Иерархия программистов
VBasic, PHP - гопники
Perl, Python - гастарбайтеры
C/Cpp - рабочий класс, мужики
Assembler - инженеры
LISP - элита
Ошибки не исчезают с опытом - они просто умнеют
программируемый бульбулятор :-)
 
Зарегистрироваться или войдите чтобы оставить сообщение.