小编Alf*_*a07的帖子

Swift实现尾调用优化吗?在相互递归的情况下?

特别是如果我有以下代码:

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)

tail-call-optimization swift

63
推荐指数
2
解决办法
7971
查看次数

如何在Swift中指定类型约束为枚举?

我想指定一个类型约束,类型应该是原始值枚举:

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#语法为例)

enums swift

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

如何在Visual Studio中组织大型项目的F#源(> 300个类)?

在C#中,您可以将文件放在与其命名空间相对应的文件夹中,并在解决方案资源管理器中查看它们.

在F#中,似乎我必须将所有内容放在简单有序的列表中进行编译.当我达到~300级的规模时,它会让人感到有些困惑和混乱,我开始羡慕C#,并认为它可能是类型推断的代价.

有没有比拆分成几个组件更好的选择?

由F#编译器的源来看它的路线,他们已经采取,但我有互联组件(控制器视图,> 300类 - - 视图模型)的相当大的系统,我想是因为在循环依赖的一个组件,即使在接口水平.

我应该忘记一个文件 - 一个类并创建一些巨大的文件?(例如,在F#编译器中,您有几个100kb到300kb范围内的源文件,并且有些自动生成1Mb左右!)

您对大型F#项目的体验是什么?

f# assemblies code-organization visual-studio c#-to-f#

21
推荐指数
2
解决办法
3161
查看次数

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

用于自动完成的Python类型推断

是否可以使用类型推断的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)

有什么好的起点吗?

python ide algorithm ocaml haskell

10
推荐指数
1
解决办法
906
查看次数

如何检查F#对象是否实现接口

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)

f# types compilation interface typechecking

10
推荐指数
3
解决办法
1421
查看次数

如何在Ocaml中使用多核进行蒙特卡罗模拟?

Ocaml进程只能使用一个核心,为了使用多个核心,我必须运行多个进程.

是否有任何Ocaml框架可用于并行化蒙特卡罗模拟?

simulation ocaml multicore montecarlo

9
推荐指数
2
解决办法
908
查看次数

我应该首先研究哪些最有用的功能性珍珠?

这是功能性珍珠.

从我的头脑中,Zipper珍珠非常有用,可用于XMonad以及许多其他现实生活中的应用程序.

还有其他类似的广泛适用性吗?

f# ocaml haskell design-patterns functional-programming

9
推荐指数
0
解决办法
411
查看次数

如何在swift中将COpaquePointer转换为某种类型(特别是CGContext?)

我在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?

swift

8
推荐指数
3
解决办法
3591
查看次数

如何在Swift中为命令行实用程序设置退出代码值?

我在语言参考中找不到它.标准模板没有提供线索:

import Foundation

println("Calculating")

// How to set and exit code when I done?
Run Code Online (Sandbox Code Playgroud)

swift

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