I’m just starting to learn Swift and attempting to do some functional-style 
programming. Specifically I’m learning how to create generic algorithms that 
can be reused for many different types.
What I’m attempting to do is create a new object, passing functions to the 
initializer. The class would store these functions as properties and then use 
them for functional-style algorithms.

The problem is I’m running into weird compiler errors/messages that I’m trying 
to figure out. I'm hoping someone here can give me some pointers on what these 
errors mean, and most likely what I’m doing wrong.

          Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.31) Target: 
x86_64-apple-macosx10.9

// =====================================================================
class Gen<InputKeyType, InputValueType, OutputKeyType, OutputValueType> {
    typealias func1Type = (numberRecords:InputKeyType, userRecord: 
InputValueType ) -> (OutputKeyType, OutputValueType)

    var afunc: func1Type

    init( inFunc: func1Type ) {
        afunc = inFunc
    }
}

var g: Gen<Int, (Int, Int), Int, (Int, Int)> =
    Gen( inFunc: { (numberRecords: Int, userRecord: (Int, Int)) -> (Int, (Int, 
Int)) in
                var b: Int = numberRecords
                var (age, numFriends) = userRecord
                print( (age), (numFriends) )
                return (age, (numFriends, 1))
            }
    )
// =====================================================================

What I get as output from the Swift compiler are these confusing messages. I 
included some print statements that hopefully gives some more info about what’s 
happening.

g: Gen<Int, (Int, Int), Int, (Int, Int)> = {
  afunc = 0x00000001012024d0 $__lldb_expr7`partial apply forwarder for 
reabstraction thunk helper from @callee_owned (@unowned Swift.Int, @unowned 
Swift.Int, @unowned Swift.Int) -> (@unowned (Swift.Int, (Swift.Int, 
Swift.Int))) to @callee_owned (@in Swift.Int, @in (Swift.Int, Swift.Int)) -> 
(@out (Swift.Int, (Swift.Int, Swift.Int))) at repl6.swift
}

print( (g) )
Gen<Swift.Int, (Swift.Int, Swift.Int), Swift.Int, (Swift.Int, Swift.Int)>

print( (g.aFunc) )
repl.swift:48:9: error: value of type 'Gen<Int, (Int, Int), Int, (Int, Int)>' 
has no member 'aFunc'
        ^ ~~~~~

There’s a good chance I’m doing something wrong but I don’t know how to figure 
out what that problem is. Any ideas?

Thanks.

Doug
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to