[ 
https://issues.apache.org/jira/browse/FLINK-9221?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17329534#comment-17329534
 ] 

Flink Jira Bot commented on FLINK-9221:
---------------------------------------

This issue is assigned but has not received an update in 7 days so it has been 
labeled "stale-assigned". If you are still working on the issue, please give an 
update and remove the label. If you are no longer working on the issue, please 
unassign so someone else may work on it. In 7 days the issue will be 
automatically unassigned.

> Add method SinkFunction[A]#contramap[B](f: B => A): SinkFunction[B]
> -------------------------------------------------------------------
>
>                 Key: FLINK-9221
>                 URL: https://issues.apache.org/jira/browse/FLINK-9221
>             Project: Flink
>          Issue Type: Task
>          Components: API / DataSet, API / DataStream
>    Affects Versions: 1.5.0
>            Reporter: Josh Lemer
>            Assignee: vinoyang
>            Priority: Minor
>              Labels: flink, stale-assigned, stale-minor
>
> Just like it is very useful to use `DataStream[T]` as a sort of Functor or 
> Monad with `map`/`flatMap`/`filter` methods, it would be extremely handy to 
> have a `SinkFunction[A]#contramap[B](f: B => A): SinkFunction[B]` on 
> `SinkFunctions`, so that you can reuse existing complex sink functions, but 
> with a different input type. For example:
> {code}
> val bucketingStringSink: SinkFunction[String] = 
>   new BucketingSink[String]("...")
>     .setBucketer(new DateTimeBucketer("yyyy-MM-dd-HHmm")
> val bucketingIntListSink: SinkFunction[List[Int]] =
>   bucketingStringSink.contramap[List[Int]](_.mkString(","))
> {code}
> For some more formal motivation behind this, 
> https://typelevel.org/cats/typeclasses/contravariant.html is definitely a 
> great place to start!



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to