anchor.diff:  
   (in-package :cl-online-learning)
   
  -(declaim (type (simple-array double-float 1) *result*))
  -(defvar *result* (make-dvec 1 0d0))
  -
  -(defmacro refr ()
  -  '(aref *result* 0))
  -
  -(defmacro setr (val)
  -  `(setf (refr) ,val))
  -
   ;;; Utils
   
   (defmacro catstr (str1 str2)
  
positive.code: (defun sf! (input weight bias result)
    (declare (type clol.vector::sparse-vector input)
             (type (simple-array double-float) weight)
             (type double-float bias)
             (type (simple-array double-float 1) result)
             (optimize (speed 3) (safety 0)))
    (ds-dot! weight input result)
    (setf (aref result 0) (+ (aref result 0) bias))
  
negative.code: 
  (defstruct (sparse-perceptron (:constructor %make-sparse-perceptron)
                                (:print-object %print-sparse-perceptron))
    input-dimension weight bias tmp-float)
  
  (defun %print-sparse-perceptron (obj stream)
    (format stream "#S(SPARSE-PERCEPTRON~%~T:INPUT-DIMENSION ~A~%~T:WEIGHT ~A ...~%~T:BIAS ~A)"
  