我最近在运行OS X 10.5.8的英特尔MacBook上安装了(来自二进制安装程序)GHC 6.12和Haskell Platform 2010.1.0.1,最初,一切正常. 编辑:我必须安装cabal,alex并happy从源,但在那之后,一切似乎都工作正常.然而,我发现,如果我使用的cabal install安装包,它取决于MacPorts的库(例如,cabal install --extra-lib-dirs=/opt/local/lib --extra-include-dirs=/opt/local/include gd),东西GHCI做工精细,但如果我尝试编译,我得到的错误
Linking test ...
Undefined symbols:
"_iconv_close", referenced from:
_hs_iconv_close in libHSbase-4.2.0.0.a(iconv.o)
"_iconv", referenced from:
_hs_iconv in libHSbase-4.2.0.0.a(iconv.o)
"_iconv_open", referenced from:
_hs_iconv_open in libHSbase-4.2.0.0.a(iconv.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
经过一些谷歌搜索,我发现了一个很长的Haskell-cafe线程讨论这个问题.结果似乎是MacPorts安装了libiconv的更新版本,而二进制接口与系统附带的版本略有不同.因此,如果您尝试链接任何MacPorts库,MacPorts libiconv也会被链接; 由于基础库是为了链接不同版本的libiconv而构建的,因此事情就会破裂.我已经尝试设置LD_LIBRARY_PATH并DYLD_LIBRARY_PATH添加更多标志以试图让它/usr/lib再次查看(例如 cabal install --extra-lib-dirs=/opt/local/lib …
我有这样的清单
["peter","1000","michell","2000","kelly","3000"]
Run Code Online (Sandbox Code Playgroud)
我想转换成
[("peter",1000),("michell", 2000),("kelly",3000)]
Run Code Online (Sandbox Code Playgroud)
请帮忙.谢谢.
编辑4:事实证明,这实际上只是TTY输入的一个限制; 没有具体的OCaml,Coq或Emacs引起的问题.
我正在使用Emacs中的Proof General进行Coq程序,我发现输入的错误太长了.如果coqtop通过Proof General 提交的区域包含超过1023个字符,则Proof General(虽然不是Emacs)在等待响应时挂起,并且*coq*缓冲区包含一个^G超过1023的每个字符的额外字符.例如,如果是1025个字符区域被发送到coqtop,然后*coq*缓冲区将以两个额外的字符结束^G^G.我无法继续过去文件中这一点,我必须杀死coqtop过程(具有C-c C-x或kill/ killall从终端).
关于这种限制的事情coqtop本身就产生了.如果生成一个1024个字符或更长的字符串并将其输入,例如通过运行
perl -e 'print ("Eval simpl in " . (" " x 1024) . "1.\n")' | coqtop
Run Code Online (Sandbox Code Playgroud)
一切正常.(同样,coqc工作正常.) 但是,如果我coqtop在终端中运行,我不能在一行上输入超过1024个字符,包括结束返回字符.因此,输入一个1023个字符的行然后点击返回工作; 但是在输入1024个字符后,点击任何键,包括返回(但不包括删除等),除了产生哔声之外什么都不做.事实证明ocaml(OCaml toplevel)具有相同的行为:
perl -e 'print ((" " x 1024) . "1;;")' | ocaml
Run Code Online (Sandbox Code Playgroud)
工作正常,但如果ocaml从终端运行,我不能在一行上输入超过1024个字符.由于我的理解是coqtop依赖于OCaml顶级(更明显的是在运行时coqtop -byte),我想这是一个相关的限制. …
有没有办法编写一个有时评估为受约束类型的类型系列,例如C a => T?
当我编写以下类型系列时出现了这个问题:
\ntype family Function (cs :: [Constraint]) (as :: [Type]) (r :: Type) :: Type where\n Function (c ': cs) as r = c => Function cs as r\n Function '[] (a ': as) r = a -> Function '[] as r\n Function '[] '[] r = r\nRun Code Online (Sandbox Code Playgroud)\n目标是Function '[Integral a, Show b] '[String, b, a] (IO ())评估为Integral a => Show b => String -> b -> a …
是否可以编写AppleScript以使显示器进入睡眠状态(如果计算机设置为锁定睡眠状态,则会锁定显示屏)?您可以通过输入⌃⇧⏏(shift+ control+ eject)从键盘执行此操作; 这使得所有程序等都在运行,并且只是关闭屏幕.
给定一个无向图(未加权)和两个顶点u和v,如何找到u和v之间的路径,其长度可被3整除?
注意,路径不一定是简单的路径.
我想到了DFS的变体和存储路径(以及回溯)的堆栈,但是不能完全理解如何跟踪非简单路径.
时间复杂度应为O(V + E),因此我预计它必须是BFS或DFS的变体.
algorithm graph-theory graph graph-algorithm data-structures
我对Cabal的工作原理感到困惑.我习惯于将经理作为其核心功能的一部分打包,能够轻松更新所有已更改的软件包,或者至少获取系统中包含可用更新的软件包列表.但是Cabal似乎缺乏这种功能.我错过了什么吗?
有办法:
在Erastosthenes论文的真正筛选中,作者使用有限大小的轮子跳过检查筛子结构上的前N个素数的倍数.例如,为了避免检查倍数2, 3,您可以从5,然后交替添加2和4.这是wheel 2以下内容:
-- wheel 0 = ([2],[1])
-- wheel 1 = ([3,2],[2])
-- wheel 2 = ([5,3,2],[2,4]) -- "start at 5, add 2, 4, 2, 4..."
-- wheel 3 = ([7,5,3,2],[4,2,4,2,4,6,2,6])
Run Code Online (Sandbox Code Playgroud)
她的车轮在筛分过程启动时完全生成.这是一个权衡,因为更大的轮子需要更多的内存.不过,我发现轮子生成背后的潜在机制本身很有趣.鉴于其明显的重复性质,我想知道是否有可能创造一个"无限轮",就像筛子一样,它呈现为一条流?我想,这个流将是列表序列的限制[1], [2], [2, 4], [4, 2, 4, 2, 4, 6, 2, 6]...- 并且可能作为primes自身的实现.
我已经制作了一个自定义用户模型,通过参考教程,这就是我如何序列化新用户模型:
Serializers.py
from django.conf import settings
User = settings.AUTH_USER_MODEL
class UserSerializer(serializers.ModelSerializer):
post = serializers.PrimaryKeyRelatedField(many=True, queryset=Listing.objects.all())
class Meta(object):
model = User
fields = ('username', 'email','post')
Run Code Online (Sandbox Code Playgroud)
Views.py
from django.conf import settings
User = settings.AUTH_USER_MODEL
class UserList(generics.ListAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用这个序列化器时,我得到了
'str'对象没有属性'_meta'
我做错了什么?
python django serialization django-serializer django-rest-framework
我最近发现Haskell的功能称为“模块签名”。如我所知,它们被放入.hsig文件中,并以signature关键字而不是开头module。这样的文件的示例语法可能看起来像
signature Str where
data Str
empty :: Str
append :: Str -> Str -> Str
Run Code Online (Sandbox Code Playgroud)
但是,我无法想象人们将如何以及为什么使用它们。您能否解释一下它们解决了哪些问题以及如何正确利用它们?
他们强烈地提醒我可以在OCaml(link)中看到的模块系统,它也具有模块签名和单独的实现,但是我无法确定这两个概念有多接近。有关系吗?