# Subst Once

 Function Syntax (LM:SubstOnce ) 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' ;;
;;------------------------------------------------------------;;
;;------------------------------------------------------------;;
;;  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' ;;
;;------------------------------------------------------------;;
;;------------------------------------------------------------;;
;;  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