Next: Функции и переменные для работы в командной строке, Previous: Командная строка, Up: Командная строка [Contents][Index]
Оператор "одиночная кавычка" ' предотвращает вычисление,
иными словами "экранирует" свой аргумент.
Примененный к символу, оператор "одиночная кавычка" предотвращает вычисление этого символа.
Примененный к вызову функции, оператор "одиночная кавычка" предотвращает вычисление этой функции, но не вычисление ее аргументов (если оно не предотвращено по другим причинам). Результатом является невычисляемая (noun) форма вызова функции.
Примененный к выражению в скобках, предотвращает вычисление
всех функций и символов внутри скобок.
Например, '(f(x)) означает – не вычислять выражение
f(x), тогда как 'f(x) (кавычка примененная к f
а не к f(x)) означает – невычисляемая форма f,
примененная к [x].
Одиночная кавычка не предотвращает упрощение.
Когда глобальный флаг noundisp имеет значение true,
невычисляемые формы функций выводятся с одиночной кавычкой.
Этот переключатель всегда установлен равным true при
печати определений функций.
См. также оператор "кавычка-кавычка" '' и nouns.
Примеры:
Примененный к символу, оператор "одиночная кавычка" предотвращает вычисление этого символа.
(%i1) aa: 1024;
(%o1)                         1024
(%i2) aa^2;
(%o2)                        1048576
(%i3) 'aa^2;
                                 2
(%o3)                          aa
(%i4) ''%;
(%o4)                        1048576
Примененный к вызову функции, оператор "одиночная кавычка" предотвращает вычисление этой функции. Результатом является невычисляемая форма вызова функции.
(%i1) x0: 5;
(%o1)                           5
(%i2) x1: 7;
(%o2)                           7
(%i3) integrate (x^2, x, x0, x1);
                               218
(%o3)                          ---
                                3
(%i4) 'integrate (x^2, x, x0, x1);
                             7
                            /
                            [   2
(%o4)                       I  x  dx
                            ]
                            /
                             5
(%i5) %, nouns;
                               218
(%o5)                          ---
                                3
Примененный к выражению в скобках, предотвращает вычисление всех функций и символов внутри скобок.
(%i1) aa: 1024; (%o1) 1024 (%i2) bb: 19; (%o2) 19 (%i3) sqrt(aa) + bb; (%o3) 51 (%i4) '(sqrt(aa) + bb); (%o4) bb + sqrt(aa) (%i5) ''%; (%o5) 51
Одиночная кавычка не предотвращает упрощение.
(%i1) sin (17 * %pi) + cos (17 * %pi); (%o1) - 1 (%i2) '(sin (17 * %pi) + cos (17 * %pi)); (%o2) - 1
Оператор "кавычка-кавычка"  '' (две одиночные кавычки) изменяет
вычисление вводимого выражения.
Примененный к выражению общего вида expr, кавычка-кавычка вызывает подстановку значения expr вместо expr в вводимом выражении.
Примененный к оператору в выражении, кавычка-кавычка изменяет невычисляемую форму оператора на вычисляемую (если она не является таковой).
Оператор кавычка-кавычка применяется при синтаксическом анализе вводимого выражения и не сохраняется как часть этого выражения. Оператор кавычка-кавычка применяется сразу после распознавания и не может быть экранирован.
Оператор кавычка-кавычка распознается функциями batch и load.
См. также оператор "кавычка" ' и nouns.
Примеры:
Примененный к выражению общего вида expr, кавычка-кавычка вызывает подстановку значения expr вместо expr в вводимом выражении.
(%i1) expand ((a + b)^3);
                     3        2      2      3
(%o1)               b  + 3 a b  + 3 a  b + a
(%i2) [_, ''_];
                         3    3        2      2      3
(%o2)     [expand((b + a) ), b  + 3 a b  + 3 a  b + a ]
(%i3) [%i1, ''%i1];
                         3    3        2      2      3
(%o3)     [expand((b + a) ), b  + 3 a b  + 3 a  b + a ]
(%i4) [aa : cc, bb : dd, cc : 17, dd : 29];
(%o4)                   [cc, dd, 17, 29]
(%i5) foo_1 (x) := aa - bb * x;
(%o5)                 foo_1(x) := aa - bb x
(%i6) foo_1 (10);
(%o6)                      cc - 10 dd
(%i7) ''%;
(%o7)                         - 273
(%i8) ''(foo_1 (10));
(%o8)                         - 273
(%i9) foo_2 (x) := ''aa - ''bb * x;
(%o9)                 foo_2(x) := cc - dd x
(%i10) foo_2 (10);
(%o10)                        - 273
(%i11) [x0 : x1, x1 : x2, x2 : x3];
(%o11)                    [x1, x2, x3]
(%i12) x0;
(%o12)                         x1
(%i13) ''x0;
(%o13)                         x2
(%i14) '' ''x0;
(%o14)                         x3
Примененный к оператору в выражении, кавычка-кавычка изменяет невычисляемую форму оператора на вычисляемую (если она не является таковой).
(%i1) sin (1); (%o1) sin(1) (%i2) ''sin (1); (%o2) 0.8414709848079 (%i3) declare (foo, noun); (%o3) done (%i4) foo (x) := x - 1729; (%o4) ''foo(x) := x - 1729 (%i5) foo (100); (%o5) foo(100) (%i6) ''foo (100); (%o6) - 1629
Оператор кавычка-кавычка применяется при синтаксическом анализе вводимого выражения и не сохраняется как часть этого выражения.
(%i1) [aa : bb, cc : dd, bb : 1234, dd : 5678];
(%o1)                 [bb, dd, 1234, 5678]
(%i2) aa + cc;
(%o2)                        dd + bb
(%i3) display (_, op (_), args (_));
                           _ = cc + aa
                         op(cc + aa) = +
                    args(cc + aa) = [cc, aa]
(%o3)                         done
(%i4) ''(aa + cc);
(%o4)                         6912
(%i5) display (_, op (_), args (_));
                           _ = dd + bb
                         op(dd + bb) = +
                    args(dd + bb) = [dd, bb]
(%o5)                         done
Оператор кавычка-кавычка вызывает вычисление в случаях когда оно
заблокировано, таких как определения функций, лямбда-выражения и выражения,
экранированные оператором кавычка '.
(%i1) foo_1a (x) := ''(integrate (log (x), x));
(%o1)               foo_1a(x) := x log(x) - x
(%i2) foo_1b (x) := integrate (log (x), x);
(%o2)           foo_1b(x) := integrate(log(x), x)
(%i3) dispfun (foo_1a, foo_1b);
(%t3)               foo_1a(x) := x log(x) - x
(%t4)           foo_1b(x) := integrate(log(x), x)
(%o4)                      [%t3, %t4]
(%i4) integrate (log (x), x);
(%o4)                     x log(x) - x
(%i5) foo_2a (x) := ''%;
(%o5)               foo_2a(x) := x log(x) - x
(%i6) foo_2b (x) := %;
(%o6)                    foo_2b(x) := %
(%i7) dispfun (foo_2a, foo_2b);
(%t7)               foo_2a(x) := x log(x) - x
(%t8)                    foo_2b(x) := %
(%o8)                      [%t7, %t8]
(%i8) F : lambda ([u], diff (sin (u), u));
(%o8)             lambda([u], diff(sin(u), u))
(%i9) G : lambda ([u], ''(diff (sin (u), u)));
(%o9)                  lambda([u], cos(u))
(%i10) '(sum (a[k], k, 1, 3) + sum (b[k], k, 1, 3));
(%o10)         sum(b , k, 1, 3) + sum(a , k, 1, 3)
                    k                  k
(%i11) '(''(sum (a[k], k, 1, 3)) + ''(sum (b[k], k, 1, 3)));
(%o11)             b  + a  + b  + a  + b  + a
                    3    3    2    2    1    1
Next: Функции и переменные для работы в командной строке, Previous: Командная строка, Up: Командная строка [Contents][Index]