Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6855239
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T01:43:57+00:00 2026-05-27T01:43:57+00:00

The following is possible in Scala: scala> val l = List l: scala.collection.immutable.List.type =

  • 0

The following is possible in Scala:

scala> val l = List
l: scala.collection.immutable.List.type = scala.collection.immutable.List$@7960c21a

scala> l ( 1, 2, 3 )
res0: List[Int] = List(1, 2, 3)

In other words, Scala has higher-order polymorphism. I would like to use higher-order polymorphism to do the following.

sealed abstract class A { def eval () : A }
case class A0 () extends A { ... }
case class A1 ( a : A ) extends A { ... }
case class A2 ( a : A, b : A ) extends A { ... }
....

So I have a bunch of case classes, subclasses of A, whose constructors don’t necessarily take the same numbers of arguments. I also would like to have a ‘generic’ case class, something like this:

case class ApplyA ( c : ???, l : List [ A ] ) extends A {
   def eval () : A = { ??? } }

The idea is that ApplyA takes as first argument a constructor for something that is a subtype of A, and a list of arguments. The eval method then constructs an appropriate class with the constructor if possible (i.e. the list has the right length) and returns it
(this corresponds to l ( 1, 2, 3) in the List example above). What would be the type of the argument of the first constructor for ApplyA?

This should be possible with higher-order polymorphism, but I could not work out how. I know that I can do this even without using higher-order polymorphism by simply wrapping constructors in functions and then passing these functions as first argument to the constructor for ApplyA, but I’d like to understand how to use higher-order polymorphism directly.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-27T01:43:57+00:00Added an answer on May 27, 2026 at 1:43 am

    The problem is that the List example doesn’t involve any higher-order polymorphism at all. List.apply just takes a variable number of parameters:

    def apply(xs: A*)
    

    Higher-order polymorphism involves methods, or types, which take type constructors as type parameters, e.g.

    def fmap[F[_], A](x: F[A]): F[B]
    

    So no, you can’t do it using higher-order polymorphism.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I know the following is not possible because the Enumeration's type has to be
Is it possible to express recursive type definitions like the following in Scala? type
Is it possible to build an Immutable List through inheritance in Scala? I have
I have the following code: class Parameterizable{ var map: Map[String, String] = new scala.collection.immutable.HashMap()
I would like to know if the following is possible in Scala (but I
Consider the following: scala> object Currency extends Enumeration { | type Currency = Value
Possible Duplicate: Understanding the tilde in Scala’s parser combinators I saw the following in
Possible Duplicate: Scala this aliasing and self type I come across this piece of
I have the following Scala code to setup a Jetty server with Scalatra. val
I have an heterogeneous List like the following one: val l = List(1, One,

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.