小编GS *_*ica的帖子

1.0是std :: generate_canonical的有效输出吗?

我一直认为随机数在0和1之间,没有1,即它们是来自半开区间[0,1]的数字.cppreference.com上的文件std::generate_canonical证实了这一点.

但是,当我运行以下程序时:

#include <iostream>
#include <limits>
#include <random>

int main()
{
    std::mt19937 rng;

    std::seed_seq sequence{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    rng.seed(sequence);
    rng.discard(12 * 629143 + 6);

    float random = std::generate_canonical<float,
                   std::numeric_limits<float>::digits>(rng);

    if (random == 1.0f)
    {
        std::cout << "Bug!\n";
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它给了我以下输出:

Bug!
Run Code Online (Sandbox Code Playgroud)

即它1会让我产生完美,这会导致我的MC集成出现问题.是有效行为还是我身边有错误?这给出了与G ++ 4.7.3相同的输出

g++ -std=c++11 test.c && ./a.out
Run Code Online (Sandbox Code Playgroud)

和铿锵3.3

clang++ -stdlib=libc++ -std=c++11 test.c && ./a.out
Run Code Online (Sandbox Code Playgroud)

如果这是正确的行为,我该如何避免1

编辑1:来自git的G ++似乎遇到了同样的问题.我在 …

c++ random c++11

124
推荐指数
2
解决办法
6088
查看次数

如何[暂时]抑制"已定义但未使用"的警告?

当我对Haskell程序进行原型化时,我总是得到数百个这样的警告(不是开玩笑):

/Users/bob/SourceCode/course/is/expriment/LiftedSpine2.hs:70:15:
    Warning: Defined but not used: `ta'

/Users/bob/SourceCode/course/is/expriment/LiftedSpine2.hs:72:15:
    Warning: Defined but not used: `ta'

/Users/bob/SourceCode/course/is/expriment/LiftedSpine2.hs:77:26:
    Warning: Defined but not used: `v'

反正暂时删除这些警告了吗?我试过把它放在我的.hs文件中:

 {-# OPTIONS_GHC -fno-warn-unused-binds -fno-warn-name-shadowing 
    -fwarn-monomorphism-restriction -fwarn-hi-shadowing
 #-}
Run Code Online (Sandbox Code Playgroud)

不幸的是,它不起作用,虽然我也尝试:设置-fno-warn-unused-binds,但它仍然不起作用.

非常感谢!

haskell ghc

27
推荐指数
4
解决办法
4123
查看次数

代码对象和可执行文件之间的区别

我是一名C++初学者,我正在研究该语言的基础知识.我的书中有一个关于编译器的主题,我的问题是我无法理解文本想要说的内容:

C++是一种编译语言,因此您需要将源代码转换为计算机可以执行的文件.该文件由编译器生成,称为目标代码(.obj),但像"hello world"程序这样的程序由我们编写的部分和C++库的一部分组成.链接器链接程序的这两部分并生成可执行文件(.exe).

为什么我的书告诉计算机执行的文件是带有obj后缀的文件(目标代码),然后说它是带有exe后缀的文件?

c++ linker

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

向我解释尾调用优化的重要性以及Python需要它的原因

显然,对于Python是否需要尾调用优化,存在很大的争议.当有人向Guido发送SICP副本时,这个问题就出现了,因为他没有"得到它".我和Guido在同一条船上.我理解尾调用优化的概念.我真的想不出Python真正需要它的任何理由.

为了让我更容易理解,有人可以给我一些代码片段,使用TCO可以大大简化吗?

python tail-recursion tail-call-optimization

20
推荐指数
3
解决办法
1464
查看次数

我可以在GHC 7.6中为类型检查器提供有关感应自然的证据吗?

GHC 7.6.1带有类型级编程的新功能,包括数据类型提升.以那里的类型级自然和向量为例,我希望能够在依赖算术基本定律的向量上编写函数.

不幸的是,即使我想要的法则通过案例分析和归纳通常很容易通过归纳自然来证明,我怀疑我能说服这种类型检查者.举个简单的例子,下面的天真反向函数的类型检查需要证明n + Su Ze ~ Su n.

有什么方法可以提供这个证据,还是我现在真的处于完全依赖类型的领域?

{-# LANGUAGE DataKinds, KindSignatures, GADTs, TypeFamilies, TypeOperators #-}

data Nat = Ze | Su Nat

data Vec :: * -> Nat -> * where
  Nil  :: Vec a Ze
  Cons :: a -> Vec a n -> Vec a (Su n)

type family (m :: Nat) + (n :: Nat) :: Nat

type instance Ze + n = n
type instance (Su m + n) = …
Run Code Online (Sandbox Code Playgroud)

haskell ghc data-kinds

18
推荐指数
1
解决办法
649
查看次数

仅在cabal测试套件中包含数据文件

我有一些数据文件只属于我的测试程序,并且会混淆与主库分发.

不幸的是,.cabal data-files字段仅适用于整个cabal文件,而不是像test-suite.如果我尝试在测试套件节中使用它,我会得到:

Warning: ssh.cabal: Unknown fields: data-files (line 71)
Run Code Online (Sandbox Code Playgroud)

有没有一种自然的方法将这些文件与我的测试程序相关联,这样只有在--enable-tests指定的情况下才能复制它们?

如果没有更好的方法,我可能会使用Template Haskell将它们嵌入到可执行文件中,然后在运行时或类似的东西再次将它们写出来,但感觉非常难看.

haskell cabal

18
推荐指数
1
解决办法
433
查看次数

我如何专注于显式类型的应用程序?

使用GHC 8.0,我可以编写一个模糊函数,它在类型签名的主要部分中未提及的某些类型上重载,然后使用显式类型应用程序调用它:

{-# LANGUAGE ScopedTypeVariables, RankNTypes,
             AllowAmbiguousTypes, TypeApplications, TypeFamilies #-}

showRead :: forall t . (Read t, Show t) => String -> String
showRead x = show (read x :: t)

showReadInt = showRead @Int
Run Code Online (Sandbox Code Playgroud)

我想使用SPECIALIZEpragma来强制showReadfor的特化Int(我的实际代码在不同的模块中有实际的调用站点).但是,正常SPECIALIZE语法基于编写类型签名的主要部分,例如:

{-# SPECIALIZE showRead :: String -> String #-}
Run Code Online (Sandbox Code Playgroud)

并且在这种情况下,不允许我指定t应该是什么,并且可预测地给出关于它是模糊的错误.

我尝试使用等式约束:

{-# SPECIALISE showRead :: forall t . (Read t, Show t, t ~ Int) => String -> String #-}
Run Code Online (Sandbox Code Playgroud)

但那只是给出了错误:

• Could not deduce …
Run Code Online (Sandbox Code Playgroud)

haskell

18
推荐指数
1
解决办法
305
查看次数

我怎么知道函数是否在F#中是尾递归的

我写了以下函数:

let str2lst str =
    let rec f s acc =
      match s with
        | "" -> acc
        | _  -> f (s.Substring 1) (s.[0]::acc)
    f str []
Run Code Online (Sandbox Code Playgroud)

如何知道F#编译器是否将其转换为循环?有没有办法在不使用Reflector的情况下找出答案(我没有使用Reflector的经验而且我不知道C#)?

编辑:另外,是否可以在不使用内部函数的情况下编写尾递归函数,或者循环是否需要驻留?

另外,F#std lib中是否有一个函数可以多次运行给定函数,每次都将最后一个输出作为输入?让我说我有一个字符串,我想在字符串上运行一个函数然后再次在结果字符串上运行它等等...

recursion f# tail-recursion tail-call-optimization

15
推荐指数
1
解决办法
2340
查看次数

资源文件无效

在尝试编译我的C#项目时,我收到以下错误:

'C:\Documents and Settings\Dan\Desktop\Rowdy Pixel\Apps\CleanerMenu\CleanerMenu\obj\Debug\CSC97.tmp' is not a valid Win32 resource file.
Run Code Online (Sandbox Code Playgroud)

经过多次Google搜索后,我确定这通常是由项目使用的图标中的256x256图像引起的.我已经浏览了所有图标并删除了256x256版本,但错误仍然存​​在.关于如何摆脱这个的任何想法?


@Mike:一天晚上神秘地出现了.我搜索了csproj文件,但没有提到CSC97.tmp(我也检查了解决方案文件,但我也没有运气).如果它有帮助,我已经在pastebin上发布了csproj文件内容.

@Derek:没问题.这是编译器输出.

------ Build started: Project: Infralution.Licensing, Configuration: Debug Any CPU ------
Infralution.Licensing -> C:\Documents and Settings\Dan\Desktop\Rowdy Pixel\Apps\CleanerMenu\Infralution.Licensing\bin\Debug\Infralution.Licensing.dll
------ Build started: Project: CleanerMenu, Configuration: Debug Any CPU ------
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /main:CleanerMenu.Program /reference:"C:\Documents and Settings\Dan\Desktop\Rowdy Pixel\Apps\CleanerMenu\Infralution.Licensing\bin\Debug\Infralution.Licensing.dll" /reference:..\NotificationBar.dll /reference:..\PSTaskDialog.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:obj\Debug\Interop.IWshRuntimeLibrary.dll /debug+ /debug:full /optimize- /out:obj\Debug\CleanerMenu.exe /resource:obj\Debug\CleanerMenu.Form1.resources /resource:obj\Debug\CleanerMenu.frmAbout.resources /resource:obj\Debug\CleanerMenu.ModalProgressWindow.resources /resource:obj\Debug\CleanerMenu.Properties.Resources.resources /resource:obj\Debug\CleanerMenu.ShortcutPropertiesViewer.resources /resource:obj\Debug\CleanerMenu.LocalizedStrings.resources /resource:obj\Debug\CleanerMenu.UpdatedLicenseForm.resources /target:winexe /win32icon:CleanerMenu.ico ErrorHandler.cs …
Run Code Online (Sandbox Code Playgroud)

c# resources visual-studio

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

如何调试混淆的JavaScript?

我需要像这个例子那样调试混淆的JavaScript:

__d("DataStore",[],function(a,b,c,d,e,f){var g={},h=1;function i(l){if(typeof l=='string'){return 'str_'+l;}else return 'elem_'+(l.__FB_TOKEN||(l.__FB_TOKEN=[h++]))........
Run Code Online (Sandbox Code Playgroud)

嵌入在MSIE,Opera和Chrome中的JavaScript调试器不理解JS使用分号而不是CRLF作为换行符; 因此不可能调试这样的脚本,因为整个函数位于一个大行上,调试器总是突出显示这一行,不允许我看看实际执行了哪部分代码.

有没有办法调试包含很长代码行的JavaScript文件,而不使用CRLF来分隔代码行?

html javascript debugging html5

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