命令(在GHCi中)
:load abc
Run Code Online (Sandbox Code Playgroud)
加载文件abc中的函数(必须存在于当前目录路径中).如何加载当前目录路径中的所有文件?谢谢
[回复以下帖子]
嗨Rotskoff,谢谢我尝试了你的建议,但我无法让它工作,所以我想我一定是误解了一些东西.
我创建了3个文件test.hs,test1.hs和test2.hs,如下所示:
- >
--test.hs
import NecessaryModule
Run Code Online (Sandbox Code Playgroud)
- >
--test1.hs
module NecessaryModule where
addNumber1 :: Int -> Int -> Int
addNumber1 a b = a + b
Run Code Online (Sandbox Code Playgroud)
- >
--test2.hs
module NecessaryModule where
addNumber2 :: Int -> Int -> Int
addNumber2 a b = a + b
Run Code Online (Sandbox Code Playgroud)
那时我做了:
:load test
Run Code Online (Sandbox Code Playgroud)
我收到了错误消息:
test.hs:1:8:
Could not find module `NecessaryModule':
Use -v to see a list of the files searched for.
Run Code Online (Sandbox Code Playgroud)
谢谢
谢谢.这就是我做的工作(按照Rotskoff的建议):
- …
在ocaml中我试图编写一个函数,它将32位无符号整数作为参数.但是,我在确定要在函数的类型声明中使用的正确标识符时遇到问题.通过谷歌搜索我只能找到int32.谢谢
我正在尝试从源代码编译和构建Qt 4.8.3.当我执行./configure时,收到以下错误消息:
./configure: 183: ./configure: /^(QMAKE_CXX)=/ { print substr($0, index($0, "=") + 1) }: not found
ERROR: Cannot set the compiler for the configuration tests
Run Code Online (Sandbox Code Playgroud)
这是否发生是因为我需要显式设置QMAKE_CXX变量?谢谢
有可能得到阴谋
我知道你可以cabal unpack用来查看特定包的来源,但我不知道如何实现上述.另请注意,在这篇文章中无法让cabal更新到公司网络内部工作,有人提到这可以做到,但说明对我来说不够具体.
这个问题涉及System.Random当从连续种子生成连续的随机数时观察到的时间相关性的起源(其中每个种子丢弃相同数量的生成器).
在使用System.Random中的mkStdGen生成随机布尔值答案1并使用System.Random中的mkStdGen生成随机布尔值答案2建议(基于引用其中的reddit文章)应该丢弃前几个生成器以获取明智的结果.然而,我发现不管有多少发生器丢弃,当观察分布的时间方面时,如果用连续种子生成连续的随机数(一个丢弃每个种子的相同数量的生成器),则获得不希望的结果.
我的问题是,所采用的算法是什么 System.Random 导致了所述方式中不同种子之间的时间相关性?
如果我们生成无限序列的随机布尔值,则P(n)获得n具有相同值(例如[True,True,True]in [False,True,True,True,False])的连续布尔值的概率为(1/2)^n.作为快速检查,我们有标准化条件:
P(1)+P(2)+....P(infty) = (1/2) + (1/2)^2 + ... = 1
Run Code Online (Sandbox Code Playgroud)
以下代码:
module Main where
import Data.List
import System.Random
generateNthGenerator startGen 0 = startGen
generateNthGenerator startGen n = generateNthGenerator newGen (n-1)
where newGen = snd $ ((random startGen) :: (Bool,StdGen))
better_mkStdGen generation seed =
generateNthGenerator (mkStdGen seed) generation
randomNums generation =
map (fst . random . (better_mkStdGen generation)) [0 .. …Run Code Online (Sandbox Code Playgroud) 我加载了两个模块(NecessaryModule1.hs和NecessaryModule2.hs在Haskell中链接:在当前目录路径中加载所有文件).现在我要卸载NecessaryModule2.hs.我在System.Plugins.Load中找到了一个'unload'函数但是它在WinGHCi中不起作用.我得到的错误信息是:
>unload NecessaryModule2
<interactive>:1:1: Not in scope: `unload'
<interactive>:1:8:
Not in scope: data constructor `NecessaryModule2'
Run Code Online (Sandbox Code Playgroud)
我试过了
import System.Plugins.Load
Run Code Online (Sandbox Code Playgroud)
但那没用.有没有办法以上述方式卸载模块?
[对Riccardo的回应]
嗨Riccardo,我尝试了你的建议,但我无法让它在WinGHCi中工作.我有一个文件NecessaryModule1.hs如下:
module NecessaryModule1 where
addNumber1 :: Int -> Int -> Int
addNumber1 a b = a + b
Run Code Online (Sandbox Code Playgroud)
我通过':cd'命令转到文件的位置,然后执行:
> :module +NecessaryModule1
<no location info>:
Could not find module `NecessaryModule1':
it is not a module in the current program, or in any known package.
Run Code Online (Sandbox Code Playgroud)
它是否正确?谢谢[编辑:见下文更正]
[更正上述]
只是为了解释为什么上述不正确(如Riccardo所解释的),需要做的是以下内容:
如果我们有一个文件NecessaryModule1.hs如下:
--NecessaryModule1.hs
module NecessaryModule1 where …Run Code Online (Sandbox Code Playgroud) 以下代码(无意做任何有用的事情)编译良好:
{-# LANGUAGE ScopedTypeVariables #-}
import System.Random
uselessFunction :: (RandomGen g) => g -> [Int]
uselessFunction gen =
let (value::Int, newGen) = (random gen)
in (uselessFunction newGen)
Run Code Online (Sandbox Code Playgroud)
是否有可能在模式匹配中使用类型变量,具体如下(代码无法编译):
{-# LANGUAGE ScopedTypeVariables #-}
import System.Random
uselessFunction :: (RandomGen g, Random a) => g -> [a]
uselessFunction gen =
let (value::a, newGen) = (random gen)
in (uselessFunction newGen)
Run Code Online (Sandbox Code Playgroud) 下面的代码(Reid Barton在Criterion中建议导致内存消耗爆炸,没有看到CAF)的基准时间与
使用优化编译时的比例成比例.然而,使用优化似乎导致基准时间独立于.核心中的结果是缓存的结果,以及我可以做些什么来阻止它被缓存?numO0O3num
代码是:
{-# OPTIONS_GHC -fno-cse #-}
{-# LANGUAGE BangPatterns #-}
module Main where
import Criterion.Main
import Data.List
num :: Int
num = 100000000
lst :: a -> [Int]
lst _ = [1,2..num]
myadd :: Int -> Int -> Int
myadd !x !y = let !result = x + y in
result
mysum = foldl' myadd 0
main :: IO ()
main = defaultMain [
bgroup "summation" …Run Code Online (Sandbox Code Playgroud) 我认为在标准 ML 中:
在 64 位 linux 上 int 也是 32 位?此外,对于标准 ML,是否有一个地方(url)列出了不同数据类型的大小?谢谢
在ghci(haskell)中有一个命令可以告诉我一个函数属于哪个模块(从加载的模块中).例如,如果函数被调用whichMod,那么它将如下工作:
Prelude>whichMod take
Prelude
Prelude>whichMod sort
Data.List
Run Code Online (Sandbox Code Playgroud)