小编Blu*_*ger的帖子

使用Clozure Common Lisp编译二进制文件

鉴于如下的简单程序,您将如何:

  1. 将其编译为要由实现加载的单独图像文件,以及您将使用哪些命令行参数加载它?

  2. 将其编译为可以按原样加载和运行的独立二进制文件.

    注意:我在保存应用程序时尝试添加":prepend-kernel t",以便抛出跟随错误.

    Error: value NIL is not of the
    expected type REAL. While executing: 
    CCL::<-2, in process Initial(0).
    
    Run Code Online (Sandbox Code Playgroud)
  3. 你会如何压制欢迎信息?

    该程序

    (defun main ()
      (format t "This is the program.")0)
    
    Run Code Online (Sandbox Code Playgroud)

编辑

讨厌回答我自己的一部分问题,但我发现了它.

加载函数后,键入以下内容进行编译:

(ccl:save-application "app")
Run Code Online (Sandbox Code Playgroud)

这会创建一个图像文件.通过将其传递给实现类型来加载它(注意:'ccl'二进制文件在我的系统路径中);

ccl -I app
Run Code Online (Sandbox Code Playgroud)

要运行顶级函数,请将其作为参数传递

ccl -I app --eval (main)
Run Code Online (Sandbox Code Playgroud)

executable compilation common-lisp

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

Common Lisp:使用&rest参数

任何人都可以告诉我如何使用存储在&rest指定的值中的参数.

我已经阅读了很多内容,似乎作者只知道如何列出所有参数.

(defun test (a &rest b) b)
Run Code Online (Sandbox Code Playgroud)

这很好看,但不是很有用.

到目前为止我发现的最好的是使用第一个,第二个等等来获取你正在寻找的参数.

(defun test (a &rest b)
    (first b))
Run Code Online (Sandbox Code Playgroud)

我注意到这个方法在第十个参数停止工作,但是规范(从我读过的内容)支持至少50个.即使机会很小,我将使用50个参数,我想知道如何访问所有.

谢谢

lisp parameters common-lisp

14
推荐指数
3
解决办法
1万
查看次数

Django admin:仅在更改表单中排除字段

如果有办法检测是否正在添加或更改模型中的信息.

如果可以,则可以使用此信息排除字段.

一些伪代码来说明我在说什么.

class SubSectionAdmin(admin.ModelAdmin):
    if something.change_or_add = 'change':
        exclude = ('field',)
    ...
Run Code Online (Sandbox Code Playgroud)

谢谢

django-admin

9
推荐指数
3
解决办法
1万
查看次数

Clozure Common Lisp - TCP套接字编程 - 发送回复

我有一个非常小的程序,它打开一个套接字并接受一个连接.然后它抓取远程IP和端口.

我想向远程计算机(telnet)发送短信并关闭连接.

我无法确定哪个函数用于向telnet客户端发送消息.

Clozure手动列出调用的函数"发送到",但它说,这是对UDP套接字和我与TCP套接字的工作.

我希望有人可以告诉我什么是正确的功能,或者,如果"发送到"是正确的功能,如何正确使用它.

谢谢

(setq my-socket (ccl:make-socket :connect :passive :format :text
        :local-port 20000 :reuse-address t))

(setq connection (ccl:accept-connection my-socket))

(setq remote-host (ccl:remote-host connection))

(setq remote-port (ccl:remote-port connection))
Run Code Online (Sandbox Code Playgroud)

sockets common-lisp ccl

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

Common Lisp:删除函数,它是如何使用的?

我有一个查询request-uri,形式为"/ node/143"(只是格式的一个例子).

我想从字符串中删除第一个正斜杠,我查找函数remove并尝试了一下.我似乎无法让它工作(我在Linux上使用SBCL).

我已经使用此代码设置了request-uri.

(setq request-uri "/node/143")
Run Code Online (Sandbox Code Playgroud)

当我检查变量时,我已将此返回.

request-uri
"/node/143"
Run Code Online (Sandbox Code Playgroud)

我现在尝试删除第一个斜杠(此时它只是用于查看函数如何正确使用的任何内容).

(remove "/" request-uri)
"/node/143"

(remove '/ request-uri)
"/node/143"
Run Code Online (Sandbox Code Playgroud)

我甚至尝试过提供一份清单

(remove '("/") request-uri)
"/node/143"

(remove '('/) request-uri)
"/node/143"
Run Code Online (Sandbox Code Playgroud)

尽管字符串是字符的向量,但我认为不管怎样,整个字符串可能放在一个单元格中,我试图删除整个字符,但仍然没有运气.

(remove "/node/143" request-uri)
"/node/143"

(remove '/node143 request-uri)
"/node/143"
Run Code Online (Sandbox Code Playgroud)

所以我现在感到很茫然,这个看似简单的功能确实让我无法理解,我以为我按照文档的说法去了,但没有任何工作.

任何人都可以了解这里发生的事情吗?

谢谢.

编辑:我找到了我的问题的答案,这提出了另一个问题.

从我使用的字符串中删除元素

(remove #\/ request-uri)
Run Code Online (Sandbox Code Playgroud)

整个字符串怎么样?

`(remove #\node request-uri`)
Run Code Online (Sandbox Code Playgroud)

仅适用于第一个字符并引发错误,以下所有内容均无效.

(remove "node" request-uri)
(remove 'node request-uri)
(remove ?\node request-uri)
(remove #\node request-uri)
(remove '("node") request-uri)
Run Code Online (Sandbox Code Playgroud)

我不确定这里应该怎么解决.

function sbcl common-lisp

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

使用推断类型的Haskell类型错误

我创建了一个数据类型来保存基本用户信息并将其加载到ghci中.然后我用ghci来查看新的数据类型类型签名.我将类型签名从ghci复制到源文件中并尝试重新加载文件.Ghci犯了一个错误.

代码和错误如下.

我的问题是,为什么这会引发错误.我使用了由ghci推断的类型.

User :: Int -> String -> String -> String -> String -> User
data User = User { userID :: Int,
                   login :: String,
                   password :: String,
                   username :: String,
                   email :: String
                   } deriving (Show)
Run Code Online (Sandbox Code Playgroud)

前奏>:r用户[1/1]编译用户(User.hs,解释)

User.hs:3:0:无效的类型签名失败,加载的模块:无.

haskell types

4
推荐指数
2
解决办法
269
查看次数

Haskell:处理类型和异常

我想知道捕获和处理异常的"Haskell方式".如下所示,我理解基本语法,但我不知道在这种情况下如何处理类型系统.

以下代码尝试返回所请求的环境变量的值.显然,如果那个变量不存在,我想捕获异常并返回Nothing.

getEnvVar x = do {
    var <- getEnv x;
    Just var;
} `catch` \ex -> do {
    Nothing
}
Run Code Online (Sandbox Code Playgroud)

这是错误:

Couldn't match expected type `IO a'
       against inferred type `Maybe String'
In the expression: Just var
In the first argument of `catch', namely
    `do { var <- getEnv x;
          Just var }'
In the expression:
      do { var <- getEnv x;
           Just var }
    `catch`
      \ ex -> do { Nothing }
Run Code Online (Sandbox Code Playgroud)

我可以返回字符串值:

getEnvVar x = do { …
Run Code Online (Sandbox Code Playgroud)

haskell types exception

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