我一直在使用F#一段时间来在用C++编码算法之前对算法进行建模,然后使用它来检查C++代码的结果,以及现实世界记录的数据.
对于事物的建模方面,它非常方便,但对于'数据混搭'类型的东西,从CSV和其他来源提取数据,生成统计数据,绘制图表等,我的同事取笑我("你为什么自己编码?它是内置于MatLab").
我还有另一位发誓R的同事,他也有"内置"图表.
我知道MatLab,R和F#没有严格的可比性,所以我不是要求'功能比较射击'.我只是想知道其他人正在使用这些分析前和分析后的场景,以及他们对它有多高兴.
(如果有人在那里努力将微软图表包装成F#友好的东西,请告诉我,我很乐意参与......)
(注意:这个问题的答案是主观的,但请根据经验)
我知道这个问题,但现在有点老了,一些答案似乎已经过时了.
问题:请为您使用的每个GUI写一个答案,包括优点和缺点(例如,据我所知,使用git gui,您无法管理存储).
我知道这个问题,但我想做的是获得接近这个生成的SQL的东西:
select MAX(Column), MIN(Column) from Table WHERE Id = 1
Run Code Online (Sandbox Code Playgroud)
当我尝试这个:
var query = from d in db.Table
where d.Id == 1
select new
{
min = db.Table.Max(s => s.Column),
max = db.Table.Min(s => s.Column)
};
Run Code Online (Sandbox Code Playgroud)
生成的sql如下所示:
SELECT
[Extent1].[Id] AS [Id],
[GroupBy1].[A1] AS [C1],
[GroupBy2].[A1] AS [C2]
FROM [dbo].[Table] AS [Extent1]
CROSS JOIN (SELECT
MAX([Extent2].[Column]) AS [A1]
FROM [dbo].[Table] AS [Extent2] ) AS [GroupBy1]
CROSS JOIN (SELECT
MIN([Extent3].[Column]) AS [A1]
FROM [dbo].[Table] AS [Extent3] ) AS [GroupBy2]
WHERE …Run Code Online (Sandbox Code Playgroud) 我在这里看到它,但是我无法解决using我必须添加它才能得到它.
(暂时滚动我自己)
git newbies似乎是一个常见的问题.
我忘了.gitignore一个特定的文件,并在提交之后将它添加到.gitignore没有任何区别.
我在gitready上找到了这个页面,它解释了如何从存储库中删除文件而不将其从工作树中删除(通过使用命令git rm --cached <file>,该工作正常,但如果我然后尝试将其合并回另一个分支,则文件在工作树被删除.
在空文件夹上重现的步骤:
git init
touch want.txt
touch wantnot.txt
git add .
git commit -m "Initial"
git checkout -b BranchForIgnore
git rm --cached wantnot.txt
cat > .gitignore
wantnot.txt [Ctrl-D Ctrl-D here to exit cat]
git add .
git commit -m "Ignoring file"
Run Code Online (Sandbox Code Playgroud)
到此为止,一切都很好
git checkout master
git merge BranchForIgnore
Run Code Online (Sandbox Code Playgroud)
此时,我的wantnot.txt文件不再是我的主人,显然,检查BranchForIgnore也无济于事.
该怎么办?
我在C中有一个库,我想用它来使用C#.
从我从互联网上收集的内容来看,一个想法是将它包装在C++ DLL中,然后用DllImport包装它.
问题是我想调用的函数有一个相当讨厌的参数集:包括对函数的引用(将是一个.NET函数),以及一些数组(一些写,一些读).
int lmdif(int (*fcn)(int, int, double*, double*, int*),
int m, int n, double* x, double ftol, double xtol, double gtol,
int maxfev, double epsfcn, double factor)
Run Code Online (Sandbox Code Playgroud)
鉴于这样的界面,我应该注意哪些恶意?(还有解决方案,请)
你为什么不......
- 用C#重写?我开始了,但它已经从FORTRAN机器翻译了,我不太喜欢编码我无法理解的东西.
- 使用现有的.NET库?我现在正在尝试,但结果并不完全相同
- 用C++重新编译?我正在考虑它,但它看起来很痛苦
我有一个我在VS2012中创建的wpf项目,但我现在正试图破解VS2010.
在csproj文件中,我删除了"必需的版本".我可以在VS2010中打开项目,我也可以编译它,但如果我尝试运行它,我会收到'needs v4.5'消息.
我尝试删除所有引用并重新添加它们:仍然编译(因此所有依赖项应该在我的(XP)机器上).
我还应该在哪儿看?
我经常在F#中使用这个递归的"访客"
let rec visitor dir filter=
seq { yield! Directory.GetFiles(dir, filter)
for subdir in Directory.GetDirectories(dir) do yield! visitor subdir filter}
Run Code Online (Sandbox Code Playgroud)
最近我开始在C#中实现一些F#功能,我试图将其重现为IEnumerable,但是我很难得到更多:
static IEnumerable<string> Visitor(string root, string filter)
{
foreach (var file in Directory.GetFiles(root, filter))
yield return file;
foreach (var subdir in Directory.GetDirectories(root))
foreach (var file in Visitor(subdir, filter))
yield return file;
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我必须在C#版本中为递归做一个双重foreach,而不是在F#中... seq {}是否隐含地执行'concat'?
我们使用状态机"框架"(基于状态模式),它不暴露其当前状态,这有时意味着我必须以迂回的方式做事.
当我质疑这个设计决定时,其中一个理由是"如果你需要知道当前的状态,你就错了".
它是否正确?我不是国家机器方面的专家.
(我在这里问,因为我知道我对状态模式有一种固有的偏见,我发现它太冗长了.)
例
想象一个系统,其中一个状态读取两个传感器.一个传感器给出一个数值,另一个给出一个布尔值,它告诉你第一个是否"可靠".系统根据最后n个良好值输出一个值,该值是当前的"好"值或插值(或其他一些奇特的计算).
我的想法是有两个子状态 - 一个'好',另一个'不'.当一个新值到来时,我想询问状态机状态,以便我知道如何处理插值.
(我想我已经回答了我自己的问题:解决方案是NewDataValue(val)在状态机中有一个事件,它只能从'良好'状态转发价值?)