una listas lista elementos dividir agregar list erlang sublist

elementos - dividir listas c#



Dividir una lista de Erlang, X, en una lista de todas las sublistas de X (1)

Supongo que su caso de prueba se está olvidando [1,3,4], pero podría verse más o menos así:

-module(settheory). -export([combinations/1]). combinations([]) -> []; combinations([H | T]) -> CT = combinations(T), [[H]] ++ [[H | L] || L <- CT] ++ CT. -include_lib("eunit/include/eunit.hrl"). combinations_test() -> ?assertEqual( combinations([1,2,3,4]), lists:sort([[1], [2], [3], [4], [1,2], [1,3], [1,4], [2,3], [2,4], [3,4], [1,2,3], [1,2,4], [1,3,4], [2,3,4], [1,2,3,4]])), ok.

lists:sublist/2 y lists:sublist/3 simplifican la extracción de una sola sublista de una lista, pero ¿hay un BiF o módulo que devuelve una lista de todas las sublistas de una lista?

es decir

lists:awesome_sublist_function([1,2,3,4]) -> [[1], [2], [3], [4], [1,2], [1,3], [1,4], [2,3], [2,4], [3,4], [1,2,3], [1,2,4], [1,3,4], [2,3,4], [1,2,3,4]]

Puede construir el mío, pero me pregunto si el problema se ha resuelto antes en cualquier lugar.