特别是如果我有以下代码:
func sum(n: Int, acc: Int) -> Int {
if n == 0 { return acc }
else { return sum(n - 1, acc + n) }
}
Run Code Online (Sandbox Code Playgroud)
Swift编译器会将它优化为循环吗?在下面一个更有趣的案例中是这样的吗?
func isOdd(n: Int) -> Bool {
if n == 0 { return false; }
else { return isEven(n - 1) }
}
func isEven(n: Int) -> Bool {
if n == 0 { return true }
else { return isOdd(n - 1) }
}
Run Code Online (Sandbox Code Playgroud) 我想指定一个类型约束,类型应该是原始值枚举:
enum SomeEnum: Int {
case One, Two, Three
}
class SomeProtocol<E: enum<Int>> { // <- won't compile
func doSomething(e: E) {
compute(e.toRaw())
}
}
Run Code Online (Sandbox Code Playgroud)
我怎么能在Swift中做到这一点?(我以F#语法为例)
在C#中,您可以将文件放在与其命名空间相对应的文件夹中,并在解决方案资源管理器中查看它们.
在F#中,似乎我必须将所有内容放在简单有序的列表中进行编译.当我达到~300级的规模时,它会让人感到有些困惑和混乱,我开始羡慕C#,并认为它可能是类型推断的代价.
有没有比拆分成几个组件更好的选择?
由F#编译器的源来看它的路线,他们已经采取,但我有互联组件(控制器视图,> 300类 - - 视图模型)的相当大的系统,我想是因为在循环依赖的一个组件,即使在接口水平.
我应该忘记一个文件 - 一个类并创建一些巨大的文件?(例如,在F#编译器中,您有几个100kb到300kb范围内的源文件,并且有些自动生成1Mb左右!)
您对大型F#项目的体验是什么?
基本上我想在NSView的Swift游乐场中测试一个图表绘图.
是否可以使用类型推断的Ocaml/Haskell算法来为Python建议更好的自动完成?
这个想法是建议自动完成,例如在以下情况:
class A:
def m1(self):
pass
def m2(self):
pass
a = A()
a. <--- suggest here 'm1' and 'm2'
fun1(a)
def fun1(b):
b. <--- suggest here 'm1' and 'm2'
Run Code Online (Sandbox Code Playgroud)
有什么好的起点吗?
C#中的原型代码:
if(obj1 is ISomeInterface) {
do_something
}
Run Code Online (Sandbox Code Playgroud)
F#中的代码无法编译:
match obj1 with
| :? ISomeInterface -> do_something
| _ -> ()
Run Code Online (Sandbox Code Playgroud) Ocaml进程只能使用一个核心,为了使用多个核心,我必须运行多个进程.
是否有任何Ocaml框架可用于并行化蒙特卡罗模拟?
我在swift中有以下代码,不能编译:
class CustomView: NSView {
override func drawRect(dirtyRect: NSRect) {
var contextPointer: COpaquePointer = NSGraphicsContext.currentContext()!.graphicsPort()
var context: CGContext? = contextPointer as? CGContext
CGContextSetRGBFillColor(context, 1, 0, 0, 1)
CGContextFillRect(context, CGRectMake(0, 0, 100, 100))
CGContextFlush(context)
}
}
Run Code Online (Sandbox Code Playgroud)
如何将COpaquePointer转换为CGContext?
我在语言参考中找不到它.标准模板没有提供线索:
import Foundation
println("Calculating")
// How to set and exit code when I done?
Run Code Online (Sandbox Code Playgroud) swift ×5
f# ×3
ocaml ×3
haskell ×2
algorithm ×1
assemblies ×1
c#-to-f# ×1
compilation ×1
enums ×1
ide ×1
interface ×1
montecarlo ×1
multicore ×1
nsview ×1
python ×1
simulation ×1
typechecking ×1
types ×1