有谁知道管理Haskell导入的工具?有时,我想通过将它们移动到另一个文件来重构事物,并且生成最小的导入集[用于新文件]的脚本会很好.
以下代码为quicksort不起作用,我无法理解是什么原因.
#include <iostream>
using namespace std;
void exch(int a[],int i,int j){
int s=a[i];
a[i]=a[j];
a[j]=s;
}
int partition(int a[],int l,int h);
void quick(int a[],int l,int h){
if (h<=l) return ;
int j=partition(a,l,h);
quick(a,l,j-1);
quick(a,j+1,h);
}
int partition(int a[],int l,int h){
int i=l-1;
int j=h;
int v=a[l];
while(true){
while( a[++i]<v);
while(a[--j]>v) if (j==i) break;
if (i>=j) break;
exch(a,i,j);
}
exch(a,i,h);
return i;
}
int main(){
int a[]={12,43,13,5,8,10,11,9,20,17};
int n=sizeof(a)/sizeof(int);
quick(a,0,n-1);
for (int i=0;i<n;i++){
cout<<a[i]<<" ";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它输出
5 …
Run Code Online (Sandbox Code Playgroud) 的:browse
,:info
和:type
GHCI命令都非常方便.
是否有可能在Haskell程序中获得相同的程序信息?也就是说,从模块中获取导出的函数,类型的东西等.
好吧,我正试图绕着类型类包围,所以我试图为几何向量运算定义一个类型类.我设法让它在组件方面工作,+,-,*,/;
但我正在努力使用dot产品.
class GeomVector a where
(>+) :: a -> a -> a
(>-) :: a -> a -> a
(>*) :: a -> a -> a
(>/) :: a -> a -> a
(>.) :: a -> a -> Double
data Vector a = Vec [a]
deriving Show
instance (Fractional a) => GeomVector (Vector a) where
(>+) (Vec u) (Vec v) = Vec $ zipWith (+) u v
(>-) (Vec u) (Vec v) = Vec $ zipWith (-) …
Run Code Online (Sandbox Code Playgroud) 1)你如何从一种Int
类型转换为一种Num
类型?
之前已经提出了类似的问题,答案是(就像在Haskell维基上一样)是用的fromIntegral
.fromIntegral
返回一个Num
类型,所以我必须将其转换为我想要的格式.
我需要Word16
把它转换成一个Int64
所以我正在做以下事情
let valueLength = (fromIntegral(tagLength) :: Int64)
Run Code Online (Sandbox Code Playgroud)
哪里tagLength
有类型Word16
这种方法是否正确?
2)如何安全地处理类型转换?
从Java后台那里是整数,我相信未来Short
,Int
并且Long
我可以使用short
作为int
而不是周围的其他方式.如果我写的话,在Haskell中
256 :: Word8
Run Code Online (Sandbox Code Playgroud)
在ghci
它中返回0.
我正在尝试从源代码编译Pyaudio(一个Python模块),因为我使用的是Windows,只有32位二进制文件可用 - 我需要64个.按照这些说明,我下载了Cygwin,并安装了每个组件,安全.首先需要安装另一个模块Portaudio.
当我运行时CFLAGS="-mno-cygwin" LDFLAGS="-mno-cygwin" ./configure
,我收到错误configure: error: C compiler cannot create executables. See 'config.log' for more details.
config.log在该消息下面有一个额外的行:gcc: The -mno-cygwin flag has been removed; use a mingw-targeted cross-compiler.
这让我相信Cygwin可能正在使用错误的编译器; 说明是使用MinGw和Cygwin,但我从来没有在过程中指定minigw.我也想知道PyAudio构建文件中是否存在需要针对64位进行更改的内容.我对C,编译,Cygwin或MinGW一无所知,也不熟悉编程.有任何想法吗?我可以提供的任何其他信息?
做push --force
总是有点冒险,这里有一个例子说明它如何产生一些问题,比如远程修改版本.
假设,有一些人鲍勃已经进行了远程更新master
从分支B
到C
.并且还有另一个人迈克没有获取此更新HEAD
,他master
的仍然是B
.然后Mike
做push --force
并突然再次master
向远程回滚B
:
mike@laptop $> git push --force origin
Counting objects: 19, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (12/12), 2.27 KiB, done.
Total 12 (delta 8), reused 0 (delta 0)
remote: => Syncing... [OK]
To git@gitserver.com:path/to/project.git
C..B master -> master (forced update)
Run Code Online (Sandbox Code Playgroud)
换句话说,在 …
我想在prolog中创建一个规则来检查列表中是否有重复的数字.
例如:
[1,2,3,4]
它会回来true
.[1,2,3,3]
它将返回false
,因为3
重复我想出了这个规则,但它不起作用
Different([]).
Different([H|T]):-
Member(H,T),
Different(T).
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在编写一个可以使用IronPython编写脚本的C#应用程序.我希望能够从C#代码发出非致命的Python警告(可以使用常规的Python警告捕获系统来处理).
我已经找到了PythonWarnings.warn
方法IronPython.Modules
,但它需要一个CodeContext
,我无法弄清楚如何创建/获取其中之一.