Travis CI持续集成服务正式支持多种语言 ,但不支持C#或F#。 我可以在我的.net项目中使用它吗?
我正试图在F#中devise一个库。 图书馆应该友好的使用F#和C# 。 这就是我被卡住的地方。 我可以让F#友好,或者我可以让C#友好,但问题是如何使它对两者友好。 这是一个例子。 想象一下,我在F#中有以下function: let compose (f: 'T -> 'TResult) (a : 'TResult -> unit) = f >> a 这是从F#完全可用的: let useComposeInFsharp() = let composite = compose (fun item -> item.ToString) (fun item -> printfn "%A" item) composite "foo" composite "bar" 在C#中, compose函数具有以下签名: FSharpFunc<T, Unit> compose<T, TResult>(FSharpFunc<T, TResult> f, FSharpFunc<TResult, Unit> a); […]
我刚刚开始使用F#,这是我的第一个function语言。 我一直准C#工作,并且非常喜欢F#如何让我重新思考如何编写代码。 我发现有一点让人迷惑,就是编写代码的过程发生了变化。 我已经在C#中使用了TDD多年,并且非常感谢有unit testing来知道我在哪里。 到目前为止,我用F#编写的过程一直是编写一些函数,使用交互式控制台与他们一起玩,直到我“合理地”确定他们工作,并调整和合并。 这在欧拉项目这样的小规模问题上效果很好,但是我无法想象以这样的方式构build大的东西。 人们如何进行unit testing并为F#程序构buildtesting套件? 是否有相当于TDD? 任何指针或想法赞赏。
函数式语言是很好的,因为它们通过消除状态来避免错误,还因为它们可以自动方便地自动并行处理,而不必担心线程数量。 作为一名Win32开发者,我可以使用Haskell来处理我的应用程序的某些dll吗? 如果我这样做,是否有一个真正的优势,会自动采取我? 如果是这样,那么编译器呢? F#能够并行处理您为多核心和cpu自动编写的函数吗? 你会看到任务pipe理器中的线程数增加吗? 基本上我的问题是,我如何以一种实用的方式开始使用Haskell,如果我真的能看到一些好处吗?
F#是从OCaml派生的,但是哪些主要项目缺失或添加? 具体来说,我很好奇,可用于学习OCaml的资源是否对想要学习F#的人也有用。
我如何去进入F#编程? 什么是一些很好的入门样本来学习这门语言,或者学习其它语言的一些优势? 我需要什么工具(例如Windows,Visual Studio,…)?
在过去的几年中,F#已经发展成为微软完全支持的语言之一,它采用了许多OCaml,ML和Haskell的思想。 在过去几年中,C#通过引入越来越多的function语言特性来扩展其通用function:LINQ(列表理解),Lambdas,闭包,匿名代表等等。 鉴于C#采用了这些function特性和F#的分类法作为不纯的函数式语言(它允许你访问框架库或者在函数被调用的时候改变共享状态),但是两种语言之间有很强的相似性自己极性相反的主要重点。 我对在您的制作多语种程序中使用这两种语言的任何成功模型感兴趣,并且还对在过去的一年中使用F#编写的生产软件(Web应用程序,客户端应用程序,服务器应用程序)用C#编写。
我最近抓住了FP错误(试图学习Haskell),而且我对迄今为止所看到的(一stream的函数,懒惰的评估以及所有其他的好东西)印象深刻。 我还没有专家,但是我已经开始发现,在function上比在基本algorithm中推理更容易(而且我在遇到麻烦的时候还要回去)。 但是,目前的FP似乎平坦的一个领域是GUI编程。 Haskell方法似乎只是包装命令式GUI工具包(如GTK +或wxWidgets),并使用“do”块来模拟命令式的风格。 我没有使用F#,但我的理解是,它使用OOP与.NET类做类似的事情。 显然,这样做有一个很好的理由 – 目前的GUI编程都是关于IO和副作用的,所以纯粹的函数式编程在大多数当前的框架中是不可能的。 我的问题是,是否有可能对GUI编程有function的方法? 我很难想象这在实践中会是什么样子。 有没有人知道任何框架,试验或其他,尝试这样的事情(甚至任何框架是从底层devise的function语言)? 或者是只使用混合方法的解决scheme,OOP用于GUI部件和FP用于逻辑? (我只是出于好奇而问 – 我很喜欢认为FP是“未来”,但GUI编程似乎是一个相当大的空缺)。
我不得不承认,我对函数式编程知之甚less。 我从这里到那里读了一遍,所以知道在函数式编程中,无论调用多less次函数,函数都会返回相同的输出。 这与math函数完全相同,即对函数expression式中涉及的input参数的相同值进行相同的输出。 例如,考虑一下: f(x,y) = x*x + y; //it is a mathematical function 无论你使用f(10,4)多less次,它的值总是104 。 因此,无论你在哪里写f(10,4) ,都可以用104replace它,而不用改变整个expression式的值。 这个属性被称为expression式的引用透明 。 正如维基百科所说( 链接 ), 相反,在函数代码中,函数的输出值仅仅依赖于input到函数的参数,所以用参数x的相同值调用函数f两次将产生相同的结果f(x)。 所以我的问题是:函数式编程中是否可以存在时间函数(返回当前时间)? 如果是,那么它又如何存在? 这是否违反函数式编程的原则? 它特别违反了参照透明性 ,这是函数式编程的一个属性(如果我正确地理解它的话)。 或者如果没有,那么在函数式编程中如何知道当前的时间呢?
F#中的inline关键字在我看来似乎与我在C中使用的有所不同。例如,它似乎影响函数的types(什么是“静态parsing的types参数”?不是所有的F#types静态parsing?) 什么时候应该使用inline函数?