小编use*_*198的帖子

我的替换功能有问题

我试图将一个简单的替换方法作为一个新的Lisp用户,但无法理解为什么这不能正常工作.

;replace element e1 with element e2 in a list L
(defun my-replace (e1 e2 L)
  (cond
   ;if the first of L is e1, cons e2 & rest L 
   ((equal (car L) (e1)) (cons (e2) (my-replace (e1 e2 (cdr L)))))
   ;else cons e1 & rest L
   (t  (cons (e1) (my-replace (e1 e2 (cdr L)))))))
Run Code Online (Sandbox Code Playgroud)

emacs replace elisp

2
推荐指数
1
解决办法
181
查看次数

具有实数的ML函数

我是ML的新手并且一直在尝试简单的功能,但我在尝试使用实数来处理函数时遇到了麻烦.例如,这个反向功能....

    fun reverse (nil) = nil
      | reverse (x::xs) = if xs = nil then [x]
                         else (reverse xs) @ [x];
Run Code Online (Sandbox Code Playgroud)

我得到了整数和字符串的propper输出.

    - reverse [1,2,3,4];
    val it = [4,3,2,1] : int list
    - reverse ["a" , "b" , "c" , "d" ];
    val it = ["d","c","b","a"] : string list
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释为什么这个函数不适用于实数?

这是我尝试实时的输出...

    - reverse [1.0, 2.0];
    stdIn:1.2-53.9 Error: operator and operand don't agree [equality type required]
      operator domain: ''Z list
      operand:         real list
      in expression:
        reverse (1.0 :: 2.0 :: nil)
Run Code Online (Sandbox Code Playgroud)

numbers ml

1
推荐指数
1
解决办法
271
查看次数

标签 统计

elisp ×1

emacs ×1

ml ×1

numbers ×1

replace ×1