;;; -*- mode: Lisp; Syntax: Common-Lisp; -*- ;;; ;;; Copyright (c) 2009 by the authors. ;;; ;;; See LICENCE for details. (in-package :hu.dwim.projectional-editor) ;;;;;; ;;; Util (def (class* ea) sequence-position () ((sequence :type sequence) (index :type integer))) (def (function e) pos (sequence index) (make-instance 'sequence-position :sequence sequence :index index)) (def (function e) form-type (form) (typecase form (cons 'list) (number 'number) (string 'string) (t (type-of form)))) ;; TODO: rename (def (function e) provider-combinator (&rest functions) (lambda (&rest args) (iter (for function :in functions) (thereis (apply function args)))))