我是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) 我有一个链接了一些git子模块的Maven项目.一切正常,直到我发布:准备或:执行,这些目标执行的干净检查不包含子模块(换句话说,git clone不是递归的).我找不到一个正确的方法来配置Maven使用--recursive选项调用git clone.
我正在考虑使用scm提供程序配置(http://maven.apache.org/scm/git.html)或只是直接在pom.xml中配置发布插件,但无法使其工作.
谢谢.
我一直试图得到一个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)
这是文件的正确路径!
我已经把它切换到加载,这似乎是有效的,我看到奇怪的行为,但这可能是我.有谁知道这里会发生什么?
我想知道是否有关于在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) 功能:
给定列表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) 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)
我已经在 …
我一直在尝试编写一个宏,除其他外,生成一个同名的编译器宏.这是我坚持的最小代码:
(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) 我正在探索将基于 Groovy DSL 的构建文件转换为 Kotlin,并希望逐步完成此操作。但是,我不知道如何读取子项目ext顶层设置的变量。build.gradlebuild.gradle.kts
我的实验存储库可以在这里找到
\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\nRun Code Online (Sandbox Code Playgroud)\n顶层文件定义了一个ext包含公共库版本的变量,如下所示:
plugins {\n id("java")\n}\n\next.libraries = [ shared: "xyz.abc.def:art:1.2" ]\nRun Code Online (Sandbox Code Playgroud)\n有两个子项目,一个使用 Groovy DSL,一个使用 Kotlin DSL。他们都试图声明对libraries.shared.
\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) 我的问题是使用gdb/gdbserver远程调试嵌入式arm处理器上的应用程序.
我可以调试应用程序本身,但应用程序动态链接到实现内部通信协议的共享库.我希望能够在共享库函数中设置断点,以便尝试找出一些设备发现问题.
我已经确保库是用调试符号编译的并且由主机端的gdb加载,我可以在库中列出函数甚至设置断点但是当我尝试运行应用程序时,我收到一条错误消息的效果:
Cannot insert breakpoint X.
Error accessing memory address : Input/output error.
其中X是gdb中的断点号,是一个很小的地址,有效.
我在目标和主机上都使用新库,但是mount -o bind newlib oldlib在nfs mount上使用目标.
有没有人知道可能出现什么问题?提前致谢.
我最近一直在学习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)