Subst Once

Function Syntax (LM:SubstOnce <a> <b> <l>)
Current Version 1.0
Arguments
Symbol Type Description
a List or Atom Item to be substituted
b List or Atom Item to be replaced
l List List in which to make the substitution
Returns
Type Description
List Resultant list following the substitution

Program Description

This subfunction will substitute the first occurrence of supplied item ('b') for a new item ('a') in a supplied list.

Recursive Version

Select all
;;---------------------=={ Subst Once }==---------------------;;
;;                                                            ;;
;;  Substitutes the first occurrence of item 'b' for item 'a' ;;
;;------------------------------------------------------------;;
;;  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;
;;------------------------------------------------------------;;
;;  Arguments:                                                ;;
;;  a - item to be substituted                                ;;
;;  b - item to be replaced                                   ;;
;;  l - list in which to make the substitution                ;;
;;------------------------------------------------------------;;
;;  Returns:  Resultant list following the substitution       ;;
;;------------------------------------------------------------;;

(defun LM:SubstOnce ( a b l )
    (if l
        (if (equal b (car l))
            (cons a (cdr l))
            (cons (car l) (LM:SubstOnce a b (cdr l)))
        )
    )
)

Iterative Version

Select all
;;---------------------=={ Subst Once }==---------------------;;
;;                                                            ;;
;;  Substitutes the first occurrence of item 'b' for item 'a' ;;
;;------------------------------------------------------------;;
;;  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;
;;------------------------------------------------------------;;
;;  Arguments:                                                ;;
;;  a - item to be substituted                                ;;
;;  b - item to be replaced                                   ;;
;;  l - list in which to make the substitution                ;;
;;------------------------------------------------------------;;
;;  Returns:  Resultant list following the substitution       ;;
;;------------------------------------------------------------;;

(defun LM:SubstOnce ( a b l )
    (mapcar '(lambda ( x ) (if (equal b x) (setq x a a nil b nil)) x) l)
)

Example Function Call

_$ (LM:SubstOnce 10 3 '(1 2 3 4 5 1 2 3 4 5))
(1 2 10 4 5 1 2 3 4 5)

textsize

increase · reset · decrease

Designed & Created by Lee Mac © 2010