<@U0B85AN68> Do you know if given a `ProtoBuf.Func...
# arrow
r
@Eugenio Do you know if given a
ProtoBuf.Function
I can get a
String
representation of the original function as it was declared? I have this but it's not looking like it get the real names and values as expressed for the function arguments:
Copy code
data class FunctionSignature(
        val typeParams: List<String>,
        val name: String,
        val args: List<Pair<String, String>>,
        val retType: String
) {

    override fun toString(): String {
        val typeParamsS = typeParams.joinToString(prefix = "<", separator = ", ", postfix = ">")
        val argsS = args.map { "${it.first}: ${it.second}" }.joinToString(prefix = "(", separator = ", ", postfix = ")")
        return "fun $typeParamsS $name$argsS: $retType"
    }


    companion object {
        fun from(c: ClassOrPackageDataWrapper, f: ProtoBuf.Function): FunctionSignature =
                FunctionSignature(
                        f.typeParameterList.map { c.nameResolver.getString(it.name) },
                        c.nameResolver.getString(f.name),
                            f.valueParameterList.map { c.nameResolver.getString(it.name) to c.nameResolver.getString(it.type.className) },
                        c.nameResolver.getString(f.returnType.className)
                )
    }
}
It returns in this case
fun <A, B> map(fa: kategory/HK, f: kotlin/Function1): kategory/HK
but the original function as declared was
fun <A, B> map(fa: HK<F, A>, f: (A) -> B): HK<F, B>
.