.gapFunc () {
  @sizeList: xs, sm, md, lg;
  @dirList: top, right, bottom, left;

  @lg: @padding-lg;
  @md: @padding-md;
  @sm: @padding-sm;
  @xs: @padding-xs;

  .sizeLoop(@i) when (@i < length(@sizeList) + 1) {
    @s: extract(@sizeList, @i);

    .margin-@{s} {
      margin: @@s;
    }
    .dirLoop(@k) when (@k < length(@dirList) + 1) {
      @d: extract(@dirList, @k);

      .margin-@{d}-@{s} {
        margin-@{d}: @@s;
      }
      .padding-@{d}-@{s} {
        padding-@{d}: @@s;
      }

      .dirLoop(@k+1);
    }
    .dirLoop(1);
    .sizeLoop(@i+1);
  }

  .sizeLoop(1);
}

.gapFunc();
