小编asm*_*asm的帖子

将Yesod部署到Heroku,无法静态构建

我是Yesod的新手,我无法静态构建Yesod,因此我可以部署到Heroku.

我更改了默认的.cabal文件以反映静态编译

if flag(production)
   cpp-options:   -DPRODUCTION
   ghc-options:   -Wall -threaded -O2 -static -optl-static
else
   ghc-options:   -Wall -threaded -O0
Run Code Online (Sandbox Code Playgroud)

它不再构建.我得到了一大堆警告,然后是一大堆未定义的引用,如下所示:

Linking dist/build/personal-website/personal-website ...
/usr/lib/ghc-7.0.3/libHSrts_thr.a(Linker.thr_o): In function
`internal_dlopen':
Linker.c:(.text+0x407): warning: Using 'dlopen' in statically linked
applications requires at runtime the shared libraries from the glibc
version used for linking
/usr/lib/ghc-7.0.3/unix-2.4.2.0/libHSunix-2.4.2.0.a(HsUnix.o): In
function `__hsunix_getpwent':
HsUnix.c:(.text+0xa1): warning: Using 'getpwent' in statically linked
applications requires at runtime the shared libraries from the glibc
version used for linking
/usr/lib/ghc-7.0.3/unix-2.4.2.0/libHSunix-2.4.2.0.a(HsUnix.o): In
function `__hsunix_getpwnam_r':
HsUnix.c:(.text+0xb1): warning: Using 'getpwnam_r' in …
Run Code Online (Sandbox Code Playgroud)

linux haskell heroku static-linking yesod

27
推荐指数
2
解决办法
3万
查看次数

如何让Maven发布克隆git子模块?

我有一个链接了一些git子模块的Maven项目.一切正常,直到我发布:准备或:执行,这些目标执行的干净检查不包含子模块(换句话说,git clone不是递归的).我找不到一个正确的方法来配置Maven使用--recursive选项调用git clone.

我正在考虑使用scm提供程序配置(http://maven.apache.org/scm/git.html)或只是直接在pom.xml中配置发布插件,但无法使其工作.

谢谢.

git maven git-submodules

13
推荐指数
2
解决办法
5367
查看次数

Ruby在路径中明确要求"没有这样的文件加载"错误

我一直试图得到一个ruby文件,需要另一个ruby文件,我觉得我疯了.我的设置如下

'/ raid1/ruby​​-code/benchmark /'中的两个文件

CommandRunner
Benchmarker

Benchmarker是目前的主要程序,并且想要CommandRunner,我尝试了很多不同的东西,但没有一个能够工作.以下列出了我在Benchmarker开头所提出的所有内容

require 'CommandRunner'
require './CommandRunner'
$LOAD_PATH.unshift File.expand_path(File.dirname($PROGRAM_NAME))
require 'CommandRunner'
$LOAD_PATH.unshift File.expand_path(File.dirname($PROGRAM_NAME))
require './CommandRunner'

我也使用require_relative尝试了所有上述排列.我已经尝试过将文件加载到emacs内的irb中,我已经在命令行中尝试过了.在irb中的某一点,它会加载一次

require 'CommandRunner'
然后加载,直到我将其切换回'./CommandRunner',然后再次加载.

我实际上有错误说

`require_relative': no such file to load -- 
/raid1/ruby-code/benchmark/CommandRunner (LoadError)

这是文件的正确路径!

我已经把它切换到加载,这似乎是有效的,我看到奇怪的行为,但这可能是我.有谁知道这里会发生什么?

ruby scripting require load-path

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

Lisp Style问题标签是否有本地功能?

我想知道是否有关于在Lisp中使用标签的标准做法.我一直在讨论第一个答案中描述的算法的Lisp实现这里懒惰地生成排列 我当前版本使用标签来突破部分功能.

(defun next-permutation (pmute)
  (declare (vector pmute))
  (let ((len (length pmute)))
    (if (> len 2)
        (labels ((get-pivot ()
                   (do ((pivot (1- len) (1- pivot)))
                       ((or (= pivot 0)
                            (< (aref pmute (1- pivot))
                               (aref pmute pivot)))
                        pivot)))
                 (get-swap (pivot)
                   (let ((swp (1- len)))
                     (loop for i from (1- len) downto pivot do
                           (if (or (and (> (aref pmute i)
                                           (aref pmute (1- pivot)))
                                        (< (aref pmute i) (aref pmute swp)))
                                   (< (aref pmute swp) (aref pmute (1- pivot)))) …
Run Code Online (Sandbox Code Playgroud)

lisp coding-style common-lisp

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

sbcl在第二次调用函数时永远运行

功能:

给定列表lst返回列表的内容的所有排列,其长度为k,如果未提供,则默认为列表的长度.

(defun permute (lst &optional (k (length lst)))
  (if (= k 1)
   (mapcar #'list lst)
   (loop for item in lst nconcing
     (mapcar (lambda (x) (cons item x)) 
             (permute (remove-if (lambda (x) (eq x item)) lst) 
                      (1- k))))))
Run Code Online (Sandbox Code Playgroud)

问题:我在连接到sbcl的emacs中使用SLIME,我还没有做太多的自定义.该功能在较小的输入上工作正常,例如lst ='(1 2 3 4 5 6 7 8)k = 3,这在实践中主要用于它.但是,当我连续两次使用大输入调用它时,第二个调用永远不会返回,而sbcl甚至不会显示在顶部.这些是REPL的结果:

CL-USER> (time (nth (1- 1000000) (permute '(0 1 2 3 4 5 6 7 8 9))))
Evaluation took:
12.263 seconds of real time
12.166150 seconds of total run time (10.705372 user, …
Run Code Online (Sandbox Code Playgroud)

lisp recursion sbcl common-lisp slime

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

为什么`sxhash`为所有结构返回一个常量?

sxhash在结构上使用Common Lisp 函数时,我得到所有结构的相同值(在SBCL中只有相同类型的结构).例如,以下代码打印两个整数列表,所有这些整数都具有相同的值.

(progn 
  (defstruct foo 
    data)
  (print (mapcar #'sxhash (loop for i below 10 collect (make-foo :data i))))
  (defstruct bar 
    data)
  (print (mapcar #'sxhash (loop for i below 10 collect (make-bar :data i)))))

 ;;; Allegro
 (319 319 319 319 319 319 319 319 319 319) 
 (319 319 319 319 319 319 319 319 319 319) 
 ;;; SBCL
 (22591133455133788 22591133455133788 22591133455133788 22591133455133788
 22591133455133788 22591133455133788 22591133455133788 22591133455133788
 22591133455133788 22591133455133788) 
(21321591953876048 21321591953876048 21321591953876048 21321591953876048
 21321591953876048 21321591953876048 21321591953876048 21321591953876048
 21321591953876048 21321591953876048) 
Run Code Online (Sandbox Code Playgroud)

我已经在 …

lisp struct common-lisp

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

生成宏形式的宏包含在绑定变量中

我一直在尝试编写一个宏,除其他外,生成一个同名的编译器宏.这是我坚持的最小代码:

 (defmacro definline (name lambda-list &body body)
  `(define-compiler-macro ,name ,lambda-list
     `(let ,,(mapcar (lambda (v) ``(,',v ,,v)) lambda-list)
        ,,@body)))
Run Code Online (Sandbox Code Playgroud)

我想要的是这样的:

(definline foobar (a b) (print "foobar") (+ a b))
;; Expands to
(define-compiler-macro foobar (a b)
  `(let ((a ,a) (b ,b))
     (print "foobar") (+ a b)))
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何生成let绑定((a ,a) (b ,b)).我无法解决的问题是如何生成编译器宏表单,以便在扩展中不引用 lambda绑定的内容.我理解如何手动执行此操作,但我不确定如何对任意lambda列表执行此操作.

编辑:

经过一些更多的摆弄,我想出了这个.哪个有效.但是,它很可怕.

(defmacro definline (name lambda-list &body body)
  (read-from-string
   (format nil "(define-compiler-macro ~S (~{~S~^ ~})
                    `(let (~{(~S ,~S)~})
                       ~{~S~}))"
           name lambda-list (loop for l in lambda-list nconc …
Run Code Online (Sandbox Code Playgroud)

lisp macros common-lisp quote

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

混合 Groovy/Kotlin DSL 多项目构建,Kotlin 如何读取 ext 变量

我正在探索将基于 Groovy DSL 的构建文件转换为 Kotlin,并希望逐步完成此操作。但是,我不知道如何读取子项目ext顶层设置的变量。build.gradlebuild.gradle.kts

\n

我的实验存储库可以在这里找到

\n

它有这样的布局:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build.gradle\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 gradle\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 wrapper\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 gradle-wrapper.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 gradle-wrapper.properties\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 gradlew\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 groovy\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 build.gradle\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kts\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build.gradle.kts\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main\n\xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 java\n\xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 xyz\n\xe2\x94\x82\xc2\xa0\xc2\xa0                 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 abc\n\xe2\x94\x82\xc2\xa0\xc2\xa0                     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 def\n\xe2\x94\x82\xc2\xa0\xc2\xa0                         \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Main.java\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 settings.gradle\n
Run Code Online (Sandbox Code Playgroud)\n

顶层文件定义了一个ext包含公共库版本的变量,如下所示:

\n
plugins {\n    id("java")\n}\n\next.libraries = [ shared: "xyz.abc.def:art:1.2" ]\n
Run Code Online (Sandbox Code Playgroud)\n

有两个子项目,一个使用 Groovy DSL,一个使用 Kotlin DSL。他们都试图声明对libraries.shared.

\n
\xe2\x95\xb0\xe2\x94\x80\xe2\x9e\xa4  cat groovy/build.gradle \nplugins {\n    id("java")\n}\n\ndependencies {\n    implementation(libraries.shared)\n}\n\n\xe2\x95\xb0\xe2\x94\x80\xe2\x9e\xa4  cat kts/build.gradle.kts \nplugins …
Run Code Online (Sandbox Code Playgroud)

java groovy gradle kotlin

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

使用gdb/gdbserver远程调试共享库

我的问题是使用gdb/gdbserver远程调试嵌入式arm处理器上的应用程序.

我可以调试应用程序本身,但应用程序动态链接到实现内部通信协议的共享库.我希望能够在共享库函数中设置断点,以便尝试找出一些设备发现问题.

我已经确保库是用调试符号编译的并且由主机端的gdb加载,我可以在库中列出函数甚至设置断点但是当我尝试运行应用程序时,我收到一条错误消息的效果:

Cannot insert breakpoint X.
Error accessing memory address : Input/output error.

其中X是gdb中的断点号,是一个很小的地址,有效.
我在目标和主机上都使用新库,但是mount -o bind newlib oldlib在nfs mount上使用目标.
有没有人知道可能出现什么问题?提前致谢.

linux gdb arm remote-debugging shared-libraries

5
推荐指数
2
解决办法
6589
查看次数

SICP练习中的Haskell数值类型层次结构

我最近一直在学习Haskell,正在和一位正在通过SICP工作的朋友交谈.我们很想比较Common Lisp和Scheme,所以我决定尝试将练习1.29翻译成Haskell.

本练习使用函数sigma,它表示数学求和函数Sigma.此函数采用函数f应用于每个术语,下限,应用于每个术语以获得下一个术语的函数和上限.它返回应用于每个术语的f的总和.

simpsonIntegral应该使用Simpson规则使用"准确度"n来近似函数f在[a,b]范围内的积分.我无法使这个功能起作用,因为似乎有些东西我不了解所涉及的类型.

这段代码将使用ghc的6.12.1版进行编译,但simpsonIntegral将被赋予一个类型上下文(Integral a,Fractional a),它没有任何意义,只要你调用它就会爆炸.我有一点工作,但我所做的显然是一个黑客,我想在这里询问如何处理这个问题.

如何习惯性地处理h中所需的积分 - >分数/实数转换?我读了很多东西,但似乎没有什么是明显和干净的.

sigma :: (Ord a, Num b) => (a -> b) -> a -> (a -> a) -> a -> b
sigma f a next b = iter a 0
  where
    iter current acc | current > b = acc
                     | otherwise = iter (next current) (acc + f current)

simpsonIntegral f a b n = 1.0 * (h / 3) * (sigma simTerm 0 (1+) n)
  where
    h = (b …
Run Code Online (Sandbox Code Playgroud)

haskell types type-conversion

5
推荐指数
2
解决办法
562
查看次数