小编Joh*_*mer的帖子

我可以将参数传递给F#FAKE构建脚本吗?

我刚刚开始使用FAKE.我真的很喜欢这个主意.在教程中,设置构建和部署目录.

// Directories
let buildDir  = "./build/"
let testDir   = "./test/"
let deployDir = "./deploy/"
Run Code Online (Sandbox Code Playgroud)

然后引用那些很好的,但是可以将其作为参数传递吗?也许作为我可以在以后使用它的任务?

f# f#-fake

24
推荐指数
1
解决办法
4381
查看次数

如何更改F#交互式shell的颜色

在我当前的配色方案中,F#交互式shell在Visual Studio中是不可读的.我已经完成了所有颜色设置,但我找不到它正在使用的设置.

如何在Visual Studio中更改F#交互式shell的颜色设置?

f# visual-studio

13
推荐指数
1
解决办法
1167
查看次数

对F#度量单位的反思

目前已在F#中添加了对反射的支持,但它不适用于度量类型.是否可以在F#中使用反射来测量类型?我读过这个.它是在2008年,但是如果你在ildasm中查看一些像bellow这样的代码你就看不出任何东西了Units of Measure.

// Learn more about F# at http://fsharp.net

[<Measure>] type m
[<Measure>] type cm

let CalculateVelocity(length:float<m> ,time:float<cm>) =
    length / time
Run Code Online (Sandbox Code Playgroud)

ildasm输出:

.method public static float64  CalculateVelocity(float64 length,
                                                 float64 time) cil managed
{
  // Code size       5 (0x5)
  .maxstack  4
  IL_0000:  nop
  IL_0001:  ldarg.0
  IL_0002:  ldarg.1
  IL_0003:  div
  IL_0004:  ret
} // end of method Program::CalculateVelocity
Run Code Online (Sandbox Code Playgroud)

所以有些东西无法在F#中反映出来.这是真的吗?看到评论:CLR中的单位实际上根本没有被看到......在文章中.

c# reflection f#

8
推荐指数
1
解决办法
1313
查看次数

为什么从F#调用我的C代码非常慢(与本机相比)?

所以我在C中写了一些数字代码,但是想从F#中调用它.然而它的运行速度非常慢.

时报:

  • gcc -O3:4秒
  • gcc -O0:30秒
  • fsharp代码调用优化的gcc代码:2分30秒.

作为参考,c代码是

int main(int argc, char** argv)
{
    setvals(100,100,15,20.0,0.0504);
    float* dmats = malloc(sizeof(float) * factor*factor);
    MakeDmat(1.4,-1.92,dmats); //dmat appears to be correct
    float* arr1 = malloc(sizeof(float)*xsize*ysize);
    float* arr2 = malloc(sizeof(float)*xsize*ysize);
    randinit(arr1);
    for (int i = 0;i < 10000;i++)
    {
            evolve(arr1,arr2,dmats);
            evolve(arr2,arr1,dmats);
            if (i==9999) {print(arr1,xsize,ysize);};
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我遗漏了函数的实现.我正在使用的F#代码是

open System.Runtime.InteropServices
open Microsoft.FSharp.NativeInterop

[<DllImport("a.dll")>] extern void main (int argc, char* argv)
[<DllImport("a.dll")>] extern void setvals (int _xsize, int _ysize, int _distlimit,float _tau,float _Iex)
[<DllImport("a.dll")>] extern …
Run Code Online (Sandbox Code Playgroud)

mono f#

6
推荐指数
1
解决办法
790
查看次数

在Vs2013中使用FsLex/Yacc

我正在尝试恢复我在vs 2008工作的旧f#解析器项目与vs 2013一起工作.它使用FsLexYacc.

我通过使用预建步骤使其构建正常:

fslex --unicode "$(ProjectDir)XpathLexer.fsl"
fsyacc --module XpathParser "$(ProjectDir)XpathParser.fsy"
Run Code Online (Sandbox Code Playgroud)

但这并不理想,因为无论输入是否发生变化,它总是会执行.

然后我尝试使用旧的MsBuild操作:

<FsYacc Include="XpathParser.fsy">
<FsLex Include="XpathLexer.fsl">
Run Code Online (Sandbox Code Playgroud)

但这些在构建过程中似乎完全被忽略了.是对的吗?以某种方式删除了这些构建任务吗?

然后我发现在vs C++下记录的一些我觉得可能有用的东西:

<CustomBuild Include="XpathParser.fsy">
  <Message>Calling FsYacc</Message>
  <Command>fsyacc --module XpathParser "$(ProjectDir)XpathParser.fsy"</Command>
  <Outputs>$(ProjectDir)XpathParser.fs</Outputs>
</CustomBuild>
Run Code Online (Sandbox Code Playgroud)

<PropertyGroup>
    <CustomBuildBeforeTargets>CoreCompile</CustomBuildBeforeTargets>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

(我检查了Microsoft.Fsharp.Targets文件以提出"CoreCompile"目标.)

唉,还是没有雪茄.

是否有人能够确定是否确实可以将fslex/yacc正确地集成到vs 2013解决方案中,如果是,如何?

msbuild f# fsyacc

5
推荐指数
1
解决办法
1400
查看次数

GCC -flto改变符号可见性

我有一大段代码,-flto只在某些版本的gcc上编译时会产生错误.我将在下面总结一下

在file1.h

extern char A [100];
Run Code Online (Sandbox Code Playgroud)

在file1.c中

#include "file1.h"
char A[100];
Run Code Online (Sandbox Code Playgroud)

我也有一些使用变量的c ++代码A.C++代码被编译成一个.o文件,然后整个事情被编译成类似的东西

gcc file1.c cpp.o
Run Code Online (Sandbox Code Playgroud)

在archlinux(5.2.0)上使用gcc版本,无论是否有问题都没有-flto.但是在Ubuntu 14.04(4.8.4)上使用gcc时,编译代码时-flto,A会成为局部变量.我用nm证实了这一点:

这些是有nm a.out问题变量的输出

Ubuntu,没有lto(拱门类似,有不同的编号):

00000000006162e0 B A
Run Code Online (Sandbox Code Playgroud)

Ubuntu,lto

00000000006092c0 b A.2722
Run Code Online (Sandbox Code Playgroud)

我的理解是,它B是一个全局变量,而b不是.

A即使我-flto在Ubuntu上使用,如何确保将其保持为全局变量?

c c++ optimization gcc compilation

5
推荐指数
1
解决办法
574
查看次数

F#中的生命游戏与加速器

我试图用加速器V2写在F#的生活,但对于一些奇怪的原因,我的输出是不是尽管我所有的数组是方方 - 看起来一切,但一个矩形区域的矩阵的左上角被设置为假.我不知道这是怎么发生的,因为我的所有操作都应该平等对待整个阵列.有任何想法吗?

open Microsoft.ParallelArrays
open System.Windows.Forms
open System.Drawing
type IPA = IntParallelArray
type BPA = BoolParallelArray
type PAops = ParallelArrays
let RNG = new System.Random()
let size = 1024
let arrinit i = Array2D.init size size (fun x y -> i)
let target = new DX9Target()
let threearr = new IPA(arrinit 3)
let twoarr =   new IPA(arrinit 2)
let onearr =   new IPA(arrinit 1)
let zeroarr =  new IPA(arrinit 0)
let shifts = [|-1;-1|]::[|-1;0|]::[|-1;1|]::[|0;-1|]::[|0;1|]::[|1;-1|]::[|1;0|]::[|1;1|]::[]
let progress (arr:BPA) = let …
Run Code Online (Sandbox Code Playgroud)

f# gpu accelerator conways-game-of-life

4
推荐指数
1
解决办法
1032
查看次数

How to edit an Item in a mutable list in f# and allow the other items in the list retain their values?

I created a list in f# named tickets that contains 10 records called Ticket.The records are all initialized with their specific seat number and empty customer name.

type Ticket = {seat:int; customer:string}  
let mutable tickets = [for n in 1..10 -> {Ticket.seat = n; Ticket.customer = ""}]
Run Code Online (Sandbox Code Playgroud)

I want to write a function to book a specific seat in the list(add a customer name to the seat). How can i edit an item in the list and have other items …

f# list mutable

4
推荐指数
1
解决办法
2657
查看次数

递归查询理解(F#3.0)

我正在尝试使用最近引入的F#3.0查询理解语法来定义Bill of Materials类型的查询.虽然可以使用yield!seq comprehensions为内存中的集合定义这些类型的查询,但我并不缺乏将它们转换为针对远程IQueryable源的查询理解.我想最困难的部分是"训练"提供者从递归模式中识别公用表表达式.

有任何想法吗?

f#

3
推荐指数
1
解决办法
285
查看次数

如何在没有对齐数组的情况下进行对齐添加

所以我试图做一个类似的数组操作

for (int i=0;i++i<32)
{
    output[offset+i] += input[i];
}
Run Code Online (Sandbox Code Playgroud)

其中outputinputfloat数组(由于16位字节对齐malloc).但是,我无法保证这一点offset%4=0.我想知道如何解决这些对齐问题.

我有点像

while (offset+c %4 != 0)
{
    c++;
    output[offset+c] += input[c];
}
Run Code Online (Sandbox Code Playgroud)

然后是一个对齐的循环 - 显然这不起作用,因为我们现在需要一个未对齐的访问权限input.

有没有办法对我的原始循环进行矢量化?

c sse simd

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