LINUX.ORG.RU

История изменений

Исправление x4DA, (текущая версия) :

Хаскель компилируется в сишку, поэтому такие вещи там возможны.

У SBCL свой оптимизирующий компилятор в ISA, поэтому сишка ему вообще не упала.

Про инлайнинг сишки в CL я слышал только у ECL, который тоже компилится в Си.

(defun sample (x)
  (ffi:c-inline (n1 n2) (:int :int) (values :int :int) "{
    int n1 = #0, n2 = #1, out1 = 0, out2 = 1;
    while (n1 <= n2) {
      out1 += n1;
      out2 *= n1;
      n1++;
    }
    @(return 0)= out1;
    @(return 1)= out2;
    }"
   :side-effects nil))

Есть реализации scheme, которые компилятся в Си, например chicken, там есть директива inline для этих вещей. http://wiki.call-cc.org/eggref/4/inline

Исправление x4DA, :

Хаскель компилируется в сишку, поэтому такие вещи там возможны.

У SBCL свой оптимизирующий компилятор в ISA, поэтому сишка ему вообще не упала.

Про инлайнинг сишки в CL я слышал только у ECL, который тоже компилится в Си.

(defun sample (x)
  (ffi:c-inline (n1 n2) (:int :int) (values :int :int) "{
    int n1 = #0, n2 = #1, out1 = 0, out2 = 1;
    while (n1 <= n2) {
      out1 += n1;
      out2 *= n1;
      n1++;
    }
    @(return 0)= out1;
    @(return 1)= out2;
    }"
   :side-effects nil))

Есть реализации scheme, которые компилятся в Си, например chicken, там есть директива inline для этих вещей. http://wiki.call-cc.org/eggref/4/inline

Исправление x4DA, :

Хаскель компилируется в сишку, поэтому такие вещи там возможны.

У SBCL свой оптимизирующий компилятор в ISA, поэтому сишка ему вообще не упала.

Про инлайнинг сишки в CL я слышал только у ECL, который тоже компилится в Си.

(defun sample (x)
  (ffi:c-inline (n1 n2) (:int :int) (values :int :int) "{
    int n1 = #0, n2 = #1, out1 = 0, out2 = 1;
    while (n1 <= n2) {
      out1 += n1;
      out2 *= n1;
      n1++;
    }
    @(return 0)= out1;
    @(return 1)= out2;
    }"
   :side-effects nil))

Исходная версия x4DA, :

Хаскель компилируется в сишку, поэтому такие вещи там возможны.

Про инлайнинг сишки в CL я слышал только у ECL, который тоже компилится в Си.

(defun sample (x)
  (ffi:c-inline (n1 n2) (:int :int) (values :int :int) "{
    int n1 = #0, n2 = #1, out1 = 0, out2 = 1;
    while (n1 <= n2) {
      out1 += n1;
      out2 *= n1;
      n1++;
    }
    @(return 0)= out1;
    @(return 1)= out2;
    }"
   :side-effects nil))