我试图lambdabot用ghc-7.8.2 安装,但在安装时遇到错误haskell-src-exts.为了诊断这个问题,我试过了
cabal install haskell-src-exts -v3
Run Code Online (Sandbox Code Playgroud)
并得到以下错误.我使用的是Windows XP 64位.我不知道这是否与windows目录名中的空格有关.任何想法/指针如何解决问题?
...
[_18] next goal: array (dependency of haskell-src-exts-1.15.0.1)
[_18] trying: array-0.5.0.0/installed-d6d...
[_19] done
Ready to install haskell-src-exts-1.15.0.1
Extracting C:\Documents and Settings\ting\Application
Waiting for install task to finish...
Data\cabal\packages\hackage.haskell.org\haskell-src-exts\1.15.0.1\haskell-src-exts-1.15.0.1.tar.gz
to C:\DOCUME~1\ting\LOCALS~1\Temp\haskell-src-exts-1.15.0.1-3008...
Renaming
'C:\DOCUME~1\ting\LOCALS~1\Temp\haskell-src-exts-1.15.0.1-3008\haskell-src-exts-1.15.0.1\dist'
to
'C:\DOCUME~1\ting\LOCALS~1\Temp\haskell-src-exts-1.15.0.1-3008\haskell-src-exts-1.15.0.1\dist-tmp'.
creating
C:\DOCUME~1\ting\LOCALS~1\Temp\haskell-src-exts-1.15.0.1-3008\haskell-src-exts-1.15.0.1\dist
Renaming
'C:\DOCUME~1\ting\LOCALS~1\Temp\haskell-src-exts-1.15.0.1-3008\haskell-src-exts-1.15.0.1\dist-tmp'
to
'C:\DOCUME~1\ting\LOCALS~1\Temp\haskell-src-exts-1.15.0.1-3008\haskell-src-exts-1.15.0.1\dist'.
Failed to install haskell-src-exts-1.15.0.1
Last 10 lines of the build log ( C:\Documents and Settings\ting\Application Data\cabal\logs\haskell-src-exts-1.15.0.1.log ):
cabal.exe: C:\Documents and Settings\ting\Application
Data\cabal\logs\haskell-src-exts-1.15.0.1.log: does not exist
Run Code Online (Sandbox Code Playgroud) 我正在使用以下代码测试通用引用,
template <typename T>
vector<T> attach_(vector<T> xs, T&& x) {
xs.push_back(std::forward<T>(x));
return xs;
}
int main() {
int k = 2;
attach_(std::move(vector<int>{1,2,3}),k); //not OK
attach_(std::move(vector<int>{1,2,3}),(int&)k); //not OK
attach_(std::move(vector<int>{1,2,3}),(int)k); //OK
attach_(std::move(vector<int>{1,2,3}),2); //OK
}
Run Code Online (Sandbox Code Playgroud)
并得到一个错误:
no matching function for call to 'attach_(std::remove_reference<std::vector<int> >::type, int&)'
attach_(std::move(vector<int>{1,2,3}),k);
note: template argument deduction/substitution failed:
note: deduced conflicting types for parameter 'T' ('int' and 'int&')
attach_(std::move(vector<int>{1,2,3}),k);
Run Code Online (Sandbox Code Playgroud)
SO有类似错误的问题错误消息"推断参数'const T'的冲突类型"关于const引用.
我还测试了一些其他案例,其中一些案例有类型转换.一些工作和其他工作没有.
我听说通用引用就像T&&匹配一切.为什么在这里失败?
第二个问题是,如何键入attach_以确保移动语义既适用于适当的输入xs又x适用于适当的输入?最后,我想要有以下变体:
for(int i = 0; i < …Run Code Online (Sandbox Code Playgroud) 我试图编写一个代码(截至2014年1月使用mingw32 gcc4.8.1),涉及两个参数包Args1...和Args2....我在这里学到了(http://en.cppreference.com/w/cpp/language/parameter_pack)我需要一个嵌套类.Args1...与Args2...相同长度(,最终我希望能推断Args2...从Args1...).有时它们甚至可以是同一类型.所以我想using为这个简单的案例写一个简写语句作为开头:
template <typename R, typename ...Args>
using zip_t = zip<R, Args...>::with<Args...>;
Run Code Online (Sandbox Code Playgroud)
但是,gcc在编译此语句时会生成段错误.任何人都可以解释我是否做错了什么或这是一个gcc bug?
g++ -std=c++11 -I.. testUsing.cpp
testUsing.cpp: In substitution of 'template<class R, class ... Args> using zip_t = zip<R, Args1 ...>::with<Args ...> [with R = A; Args = {}]':
testUsing.cpp:19:15: required from here
testUsing.cpp:16:45: internal compiler error: Segmentation fault
using zip_t = zip<R, Args...>::with<Args...>;
^
Run Code Online (Sandbox Code Playgroud)
最小代码如下:(改编自http://en.cppreference.com/w/cpp/language/parameter_pack)
template<typename...> struct Tuple {}; …Run Code Online (Sandbox Code Playgroud) 我试图将wxHaskell安装到运行Windows XP64的机器上,使用gcc从源代码构建MinGW/MSYS和wxWidget 3.0.我做了:
cabal install wx
Run Code Online (Sandbox Code Playgroud)
并得到一个错误:
...
Configuring wxc-0.90.0.4...
setup.exe: wx-config: does not exist
Failed to install wxc-0.90.0.4
cabal.exe: Error: some packages failed to install:
wx-0.90.0.1 depends on wxc-0.90.0.4 which failed to install.
wxc-0.90.0.4 failed during the configure step. The exception was:
ExitFailure 1
wxcore-0.90.0.3 depends on wxc-0.90.0.4 which failed to install.
Run Code Online (Sandbox Code Playgroud)
我已成功使用wxWidgets在C++(gcc)中编写示例应用程序.所以我确实有一个工作的wxWidget安装.我有wx-config:
$ which wx-config
/usr/local/bin/wx-config
Run Code Online (Sandbox Code Playgroud)
问题是这wx-config是一个unix shell脚本,并且cabal(从MSYS调用)以某种方式拒绝识别它,即使它在系统路径上.如果我wx-config在MSYS中运行,我得到类似的东西:
$ wx-config --cxxflags
-I/usr/local/lib/wx/include/msw-unicode-3.0 -I/usr/local/include/wx-3.0 -D_LARGE
FILE_SOURCE=unknown -DWXUSINGDLL -D__WXMSW__ -mthreads
Run Code Online (Sandbox Code Playgroud)
我问了一个问题/sf/ask/1539913441/,看看是否可以将脚本转换为exe,但是没有人回应任何解决方案.
这里还有一个相关的问题, …
我想知道是否有宏或标准方式(用于调试目的)来自动打印函数 f 的参数值,就像__FUNCTION__打印/显示函数签名一样?例如,
void foo(int x, string y) {
cout << __FUNCTIION_ARGS__ << endl;
}
Run Code Online (Sandbox Code Playgroud)
应显示x, 和的值y。
如果标准方式没有这种魔法,是否可以编写宏/模板来执行此操作?
- 更新 -
根据@jxh 的评论,如果使用宏/模板无法在所讨论的函数内打印,是否可以在调用方自动执行此操作,例如:
call(foo,x,y);
Run Code Online (Sandbox Code Playgroud)
它打印每个参数值,和行为相同与foo(x,y) 仿佛它是在每一个其他方面直接调用?如果一个值不可打印(例如指针、函数),包装器call只能打印一个不透明的值,例如<ptr>或<noprint>。
谢谢
PS我正在使用gcc,(将来也会使用clang)。
据我了解,Coq中的函数调用是不透明的。有时,我需要使用unfold它,然后fold再将函数定义/主体改回其名称。这通常很乏味。我的问题是,有没有更简单的方法来应用函数调用的特定实例?
举一个最小的例子,对于list l,证明右添加[]不会改变l:
Theorem nil_right_app: forall {Y} (l: list Y), l ++ [] = l.
Proof.
induction l.
reflexivity.
Run Code Online (Sandbox Code Playgroud)
这留下:
1 subgoals
Y : Type
x : Y
l : list Y
IHl : l ++ [] = l
______________________________________(1/1)
(x :: l) ++ [] = x :: l
Run Code Online (Sandbox Code Playgroud)
现在,我需要一次应用++(即app)的定义(假装++目标中我不想应用/扩展的其他对象)。当前,我知道实现此一次性应用程序的唯一方法是先展开++然后折叠:
unfold app at 1. fold (app l []).
Run Code Online (Sandbox Code Playgroud)
给予:
______________________________________(1/1)
x :: l …Run Code Online (Sandbox Code Playgroud) 我正在阅读ssreflect教程,内容如下:
下面,我们通过将命题陈述翻译成布尔对应物来证明...,这很容易用暴力证明.这种证明技术称为反射.Ssreflect的设计允许和ssreflect的精神建议广泛使用这种技术.
这(反射)是否意味着ssreflect假设排除中间(forall A:Prop, A \/ ~A)?
它看起来就是这种情况,因为所有布尔值都满足EM如果是这样,这将是遵循ssreflect样式的一个很大的假设.
另外,我不太了解下面的"本地"或"小规模"部分:
由于它通常在本地用于有效处理样张的小部分(而不是在整个校样结构中使用),这称为小规模反射,因此名称为ssreflect.
小部件与整体打样结构的含义是什么?这是否意味着我们可以在本地假设EM有时没有伤害并且一般不使用EM,或者这里的本地是否意味着其他东西?
另外,我在Coq方面经验不足,并且不太清楚"布尔对应物"上的这种"蛮力"风格(主要基于case我目前读到的分析)是否比香草Coq方式更有效.对我来说,蛮力不是很直观,在你看到结果之前不容易猜到.
有什么具体的例子来说明这里的效率吗?
我想知道该simpl策略如何在 COQ 中发挥作用。
假设以下引理:
Parameter n:nat.
Lemma test: S n + 0 = S (n+0).
Run Code Online (Sandbox Code Playgroud)
现在,simpl.战术产生
S (n + 0) = S (n + 0)
Run Code Online (Sandbox Code Playgroud)
我的理解是simpl执行一系列
cbv beta, delta, iota转换。我试过了,但无法获得与simpl. 基本问题是,在cbv delta展开之后,该plus术语一直在展开。我怎样才能去扩展它,即重新替换plus扩展定义的名称?
或者,谁能告诉我如何simpl通过手动执行更基本的策略来获得效果?
我已经为一个问题苦苦挣扎了一个星期,我无法像这张图片中的左脸一样将一张脸从非正面旋转到同一张图片中的右脸一样的正面。
1)。我在learnopencv网站上使用了一个关于delaunay的教程来获取左面的所有三角形(大约138个三角形),如下所示:
...
triangle num 4: [100, 383] | [120, 374] | [112, 385]
triangle num 5: [120, 374] | [100, 383] | [92, 345]
triangle num 6: [136, 396] | [137, 379] | [151, 394]
triangle num 7: [137, 379] | [136, 396] | [118, 395]
triangle num 8: [92, 345] | [86, 414] | [80, 451]
triangle num 9: [86, 414] | [92, 345] | [100, 383]
triangle num 10: [86, 414] | [100, 383] | …Run Code Online (Sandbox Code Playgroud) 我想尝试看起来像这样的东西:
GET/v2.8/PageFacebook/posts?fields="all??"
Run Code Online (Sandbox Code Playgroud)
这是因为默认情况下它不会给我发布帖子的"名称"或"类型".而且我不想进行逐场咨询.